将匿名类型转换为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