C# 如何将DataTable 高效转成List<Dictionary<string, object>>?
Dictionary<string, object>代表一行,string是字段名,object是字段值
不直接使用foreach,封装一个转换的类
C# 如何将DataTable 高效转成List<Dictionary<string, object>>?
Dictionary<string, object>代表一行,string是字段名,object是字段值
不直接使用foreach,封装一个转换的类
使用AsEnumerable封装的静态扩展方法,如下:
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text.Json;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
DoWork();
}
static void DoWork()
{
var dt = new DataTable();
dt.Columns.Add("RowId");
dt.Columns.Add("FirstName");
dt.Columns.Add("LastName");
dt.Columns.Add("Quality");
dt.Rows.Add(1, "Tom", "Hilton", "ABC");
dt.Rows.Add(1, "Tom", "Hilton", "ABC");
dt.Rows.Add(3, "Test3", "Sample3", "AWR");
dt.Rows.Add(4, "Test4", "Sample4", "XYZ");
dt.Rows.Add(5, "Test5", "Sample5", "BCA");
var list = dt.ConvertToList();
Console.WriteLine(JsonSerializer.Serialize(list));
}
}
public static class DataTableExtension
{
public static List<Dictionary<string, string>> ConvertToList(this DataTable dataTable)
{
return dataTable.AsEnumerable().Select(
row => dataTable.Columns.Cast<DataColumn>().ToDictionary(
column => column.ColumnName, // 键
column => row[column] as string // 值
)
).ToList();
}
}
}
运行结果如下:
我是Rector,码友网的创建者,码友网--一个.NET/.NET Core开发的编程社区。关注码友网,解锁更多.NET&C#开发技巧。