我有一个包含此样本数据的数据表。
要求制作此数据表,使其返回所有行,但对于重复行(例如最后两行),要求是将不同的值与逗号组合,并通过将其作为一条记录返回。
例如:
Gold-Silver,Metllurgist 19 Nick Gordon。 。 。 。 。
请帮帮我。
感谢
答案 0 :(得分:1)
由于专业领域是唯一的变化领域,并且您想要该领域的组合值,因此需要以下
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来自tool
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)