我有一个包含此示例数据的数据表。
要求是制作此数据表,以便它返回所有行,但对于重复行(例如最后两个),要求是将不同的值与逗号组合并通过使其成为一条记录返回。
例如:
金-银,冶金学家 19 尼克·戈登。. . . .
请帮我。
谢谢
由于专业字段是唯一变化的字段,并且您希望该字段的组合值,因此需要以下
1.Grouping
基于Profession
2.Select
记录
3.Aggregate
用于组合专业
您还需要定义一个具体类型来表示Row
(ProfessionRecord
在下面的代码中)
var results = dataTable.AsEnumerable()
.GroupBy(x=> x.Field<string>("Profession"))
.Select ( grouping =>
new {
Key=grouping.Key,
CombinedProfession = grouping.Aggregate( (a,b)=> a + " " + b)
})
.Select (x=> new ProfessionRecord
{
Id = x.Key.Id,
Name = x.Key.Name,
Profesion = x.CombinedProfession,
});
VB.NET 从工具
Dim results = dataTable.AsEnumerable().GroupBy(Function(x) x.Field(Of String)("Profession")).[Select](Function(grouping) New With { _
.Key = grouping.Key, _
.CombinedProfession = grouping.Aggregate(Function(a, b) a + " " + b) _
}).[Select](Function(x) New ProfessionRecord() With { _
.Id = x.Key.Id, _
.Name = x.Key.Name, _
.Profesion = x.CombinedProfession _
})
(我不确定它优化了多少,因为 VB.NET 不是我的第一语言)
您需要 为该方法添加数据行扩展的引用Field<T>(string fieldname)