将匿名类型转换为DataTable

6
什么是将匿名类型转换为DataTable的最快方法?
更新:我想从匿名类型中获取和填充DataTable。 如果需要使用反射,如何使用反射进行操作?

1
你想要一个通用的解决方案,还是针对特定匿名类型的解决方案? - George Duckett
2
匿名类型并没有什么特别之处;适用于一般列表(如 https://dev59.com/I3RB5IYBdhLWcg3wpYmo)的解答仍然适用。个人而言,我宁愿拥有对象列表而不是 DataTable。 - Marc Gravell
3个回答

11
在这里找到这里
var result = from p in dataSource 
             group p by p.City into cities 
             select new { Property1 = cities.Key, Property2 = cities.Average(p => p.Age) }; 

dt.Columns.Add("Property1"); 
dt.Columns.Add("Property2"); 
foreach (var item in result) 
{   
    dt.Rows.Add(item.Property1,item.Property2);                 
}

点击这里查看通用解决方案:将通用的List/Enumerable转换为DataTable?


@Alex,如果你想要一个通用的解决方案,你应该说出来(另外,我编辑了我的答案来提供一个)。 - George Duckett

0
///fill dt1
Dim dt1 As New DataTable  dt1 = connection.LoadPoliceData("")
///fll dt2
Dim dt2 As New DataTable  dt2 = connection.LoadDataCompare("")
////fill enumerable data(anonymous data) in dt , using linq query
Dim dt As New DataTable
dt.Columns.Add("Name", GetType(String))
dt.Columns.Add("Mobile", GetType(String))
Dim data1 = (From datarow1 In dt1.AsEnumerable Join datarow2 In  dt2.AsEnumerable
              On datarow1.Field(Of String)("NameofPerson") Equals  datarow2.Field(Of String)("Name") And datarow1.Field(Of String)("Mobile") Equals datarow2.Field(Of String)("MobileNumber")
              Select dt.LoadDataRow(New Object() {datarow1.Field(Of String)("NameofPerson"), datarow2.Field(Of String)("MobileNumber")}, False)).Distinct().ToList()

Dim i = dt.Rows.Count

在dt(数据表变量)中的记录


请返回翻译后的文本:详细摘要如下: - manish hacker

-2

///summary 填充数据表一(dt1)

Dim dt1 As New DataTable

dt1 = connection.LoadPoliceData("")

///summary 填充数据表二(dt2)

Dim dt2 As New DataTable

dt2 = connection.LoadDataCompare("")

/// summary 声明保存数据表,我想填充可枚举数据

Dim save As New DataTable

save.Columns.Add("Name", GetType(String))

save.Columns.Add("Mobile", GetType(String))

///summary 使用dt1和dt2的连接编写linq查询,并将结果保存到datatable(save)中

Dim data1 = (From datarow1 In dt1.AsEnumerable Join datarow2 In dt2.AsEnumerable On datarow1.Field(Of String)("NameofPerson") Equals datarow2.Field(Of String)("Name") And datarow1.Field(Of String)("Mobile") Equals datarow2.Field(Of String)("MobileNumber") Select save.LoadDataRow(New Object() {datarow1.Field(Of String)("NameofPerson"), datarow2.Field(Of String)("MobileNumber")}, False)).Distinct().ToList()

///summary 数据表(save)的行数

Dim i = save.Rows.Count


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接