【问题标题】:Linq query to combine cell results?Linq 查询合并单元格结果?
【发布时间】:2013-01-11 04:44:47
【问题描述】:

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

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

例如:

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

请帮帮我。

谢谢

【问题讨论】:

    标签: c# asp.net .net vb.net linq


    【解决方案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 来自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&lt;T&gt;(string fieldname)添加Data Row Extensions的引用

    【讨论】:

    • 感谢@Tilak,行不会重复,因为即使对于相同的行,Profession 列也会有不同的值。我想制作数据表,因为它返回所有行,对于重复的行,它将它们组合起来,对于 Profession 列,它可能使它们以逗号分隔,正如我在查询中提到的那样。请指导
    • 很抱歉再次询问,但正如我在 vb 中所做的那样,你能在 vb 中给出代码吗?我正在尝试使用转换器对其进行转换,但它显示了我无法理解的错误。请
    猜你喜欢
    • 2012-06-04
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多