C# 将匿名类型转换为DataTable

C# 将匿名类型转换为DataTable,c#,.net-4.0,datatable,asp.net-4.0,anonymous-types,C#,.net 4.0,Datatable,Asp.net 4.0,Anonymous Types,将匿名类型转换为DataTable的最快方法是什么 更新: 我想从匿名类型获取并填充DataTable。如果需要反射,如何使用反射进行反射?找到: 有关通用解决方案,请参见此处: Dim i=dt.Rows.Count 记录在dt(数据表变量)///汇总填写数据表1(dt1) Dim dt1作为新数据表 dt1=connection.LoadPolicyData(“”) ///汇总填充数据表1(dt2) Dim dt2作为新数据表 dt2=connection.LoadDataCompare(

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

更新: 我想从匿名类型获取并填充DataTable。如果需要反射,如何使用反射进行反射?

找到:


有关通用解决方案,请参见此处:

Dim i=dt.Rows.Count


记录在dt(数据表变量)

///汇总填写数据表1(dt1)

Dim dt1作为新数据表

dt1=connection.LoadPolicyData(“”)


///汇总填充数据表1(dt2)

Dim dt2作为新数据表

dt2=connection.LoadDataCompare(“”)

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

Dim另存为新数据表

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

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

///使用dt1和dt2的联接以及datatable(保存)摘要写入linq查询

Dim data1=(来自dt1.AsEnumerable中的datarow1 在dt2.AsEnumerable中加入datarow2 在datarow1.Field(属于字符串)(“NameofPerson”)上等于datarow2.Field(属于字符串)(“Name”),datarow1.Field(属于字符串)(“Mobile”)等于datarow2.Field(属于字符串)(“MobileEnumber”) 选择save.LoadDataRow(New Object(){datarow1.Field(Of String)(“nameoperson”)、datarow2.Field(Of String)(“MobileNumber”)},False)).Distinct().ToList()

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


Dim i=save.Rows.Count

您想要一个通用的解决方案,还是一个针对特定匿名类型的解决方案?匿名类型没有什么特别的;一般清单(如)的答案仍然适用。就我个人而言,我更喜欢对象列表而不是数据表。@Alex,如果你想要一个通用的解决方案,你应该说(另外,我编辑了我的答案以提供一个)。下面是详细的总结
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);                 
}
///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()