将匿名类型转换为DataTable

将匿名类型转换为DataTable的最快方法是什么?

更新:我想从匿名类型获取并填充DataTable。 如果reflection是必要的,我怎么能用reflection来做呢?

在这里找到:

var result = from p in dataSource group p by p.City into cities select new { Property1 = cities.Key, Property 2= 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?

 ///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(数据表变量)

///摘要填充数据表一(dt1)

昏暗的dt1作为新的DataTable

dt1 = connection.LoadPoliceData(“”)

///摘要填充数据表一(dt2)

昏暗的dt2作为新的DataTable

dt2 = connection.LoadDataCompare(“”)

///摘要声明数据表保存。 我想要填充可枚举的数据

Dim save As New DataTable

save.Columns.Add(“Name”,GetType(String))

save.Columns.Add(“Mobile”,GetType(String))

///汇总使用dt1和dt2的连接编写linq查询,并且数据表(保存)

Dim data1 =(来自datarow1 in dt1.AsEnumerable Join datarow2 in dt2.AsEnumerable on datarow1.Field(Of String)(“NameofPerson”)Equals datarow2.Field(Of String)(“Name”)和datarow1.Field(Of String) (“Mobile”)Equals datarow2.Field(Of String)(“MobileNumber”)选择save.LoadDataRow(New Object(){datarow1.Field(Of String)(“NameofPerson”),datarow2.Field(Of String)(“ MobileNumber“)},False))。Distinct()。ToList()

///数据表保存的摘要计数

Dim i = save.Rows.Count