Tru*_*an1 6 .net c# linq asp.net dataset
我使用的是.NET 3.5,需要将下面的select new结果转换为DataTable.是否有内置的东西或任何人知道的方法可以做到这一点?
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")
});
Run Code Online (Sandbox Code Playgroud)
简单直接的事情是使用反射:
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);
}
Run Code Online (Sandbox Code Playgroud)
代码可能没有预先提供,但应该给你一个大致的想法.首先,从匿名类型获取propertyInfos并使用此元数据创建数据表模式(填充列).然后使用这些信息从每个对象获取值.
| 归档时间: |
|
| 查看次数: |
8110 次 |
| 最近记录: |