gpt4 book ai didi

c# - 将 select new 转换为 DataTable?

转载 作者:太空狗 更新时间:2023-10-29 21:09:58 26 4
gpt4 key购买 nike

我使用的是 .NET 3.5,需要将下面选择的新结果转换为数据表。是否有内置的东西或任何人知道可以做到这一点的方法?

var contentList = (from item in this.GetData().Cast<IContent>()
select new
{
Title = item.GetMetaData("Title"),
Street = item.GetMetaData("Street"),
City = item.GetMetaData("City"),
Country = item.GetMetaData("Country")
});

最佳答案

简单直接的做法是使用反射:

var records = (from item in this.GetData().Cast<IContent>()
select new
{
Title = "1",
Street = "2",
City = "3",
Country = "4"
});
var firstRecord = records.First();
if (firstRecord == null)
return;

var infos = firstRecord.GetType().GetProperties();
DataTable table = new DataTable();
foreach (var info in infos) {
DataColumn column = new DataColumn(info.Name, info.PropertyType);
table.Columns.Add(column);
}

foreach (var record in records) {
DataRow row = table.NewRow();
for (int i = 0; i < table.Columns.Count; i++)
row[i] = infos[i].GetValue(record);
table.Rows.Add(row);
}

代码可能无法预先运行,但应该能为您提供一个大概的概念。首先,您从匿名类型获取 propertyInfos 并使用此元数据创建数据表模式(填充列)。然后你使用这些信息从每个对象中获取值。

关于c# - 将 select new 转换为 DataTable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9937573/

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