gpt4 book ai didi

c# - 将 DataTable 转换为 LINQ 匿名类型

转载 作者:行者123 更新时间:2023-11-30 13:45:31 25 4
gpt4 key购买 nike

我想要一个接受数据表并返回列表的函数(对象不是数据行)例如。 :

我知道我可以做到这一点(但这需要知道列名):

        // Datatable dt = Filled from a Database query & has 3 columns Code,Description & ShortCode

List<object> rtn = new List<object>();

var x = from vals in dt.Select()
select new
{
Code = vals["Code"],
Description = vals["Description"],
ShortCode = vals["ShortCode"],
};
rtn.AddRange(x)

return rtn;

我想要的是一个通用版本,这样我就可以传入任何数据表,它会根据数据表中的列名生成。

最佳答案

由于属性名称在编译时是未知的,并且您想使用数据进行 JSON 序列化,因此您可以使用以下内容创建字典列表。如果您使用 Newtonsoft JSON,则序列化负责将键值对转换为 JSON 对象格式。

IEnumerable<Dictionary<string,object>> result = dt.Select().Select(x => x.ItemArray.Select((a, i) => new { Name = dt.Columns[i].ColumnName, Value = a })
.ToDictionary(a => a.Name, a => a.Value));

关于c# - 将 DataTable 转换为 LINQ 匿名类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28690665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com