[英]Linq query to combine cell results?
我有一个带有此示例数据的数据表。
要求是使此数据表返回所有行,但对于重复的行(例如,最后两行),要求将其中的不同值与逗号组合并通过使其成为一条记录来返回。
例如:
金银,冶金学家19尼克·戈登(Nick Gordon)。 。 。 。 。
请帮我。
谢谢
由于“专业”字段是唯一变化的字段,并且您需要该字段的组合值,因此需要以下内容
1.基于Profession
Grouping
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)
添加数据行扩展的引用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.