繁体   English   中英

Linq查询合并单元格结果?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM