0

我有一个包含此示例数据的数据表。

在此处输入图像描述

要求是制作此数据表,以便它返回所有行,但对于重复行(例如最后两个),要求是将不同的值与逗号组合并通过使其成为一条记录返回。

例如:

金-银,冶金学家 19 尼克·戈登。. . . .

请帮我。

谢谢

4

1 回答 1

1

由于专业字段是唯一变化的字段,并且您希望该字段的组合值,因此需要以下
1.Grouping基于Profession
2.Select记录
3.Aggregate用于组合专业

您还需要定义一个具体类型来表示RowProfessionRecord在下面的代码中)

 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)

于 2013-01-11T05:06:14.747 回答