【问题标题】:Grouping Similar columns and concatenate other columns in LINQ在 LINQ 中对相似列进行分组并连接其他列
【发布时间】:2014-02-01 08:52:47
【问题描述】:

我有以下课程

public class InvoiceRO 
{
    public int ID{ get; set; }

    public string Address { get; set; }

    public string Reference1 { get; set; }

    public string DNNumber { get; set; }

    public string QuotationNumber { get; set; }

}

我这里的数据如下

ID   Address    Reference1  DNNumber   QuotationNumber
----------------------------------------------------------
1    add1           ref1      d001      q001
2    add1           ref1      d001      q002
3    add1           ref1      d002      q003

我只需要一行作为输出,所以前 2 列值将相等并且只得到一个,最后 2 列将连接并检索为逗号分隔值。最终输出将是

ID   Address    Reference1  DNNumber        QuotationNumber
----------------------------------------------------------
1    add1           ref1      d001, d002      q001, q002, q003

如何在 LINQ 中进行这样的分组?

【问题讨论】:

    标签: c# linq linq-group


    【解决方案1】:

    您可以使用GroupBy,然后将字符串与String.Join 连接:

    invoices.GroupBy(i => new {i.Address, i.Reference1})
            .Select(g => new InvoiceRO {
                            ID              = g.First().ID, 
                            Address         = g.Key.Address, 
                            Reference1      = g.Key.Reference1,
                            DNNumber        = string.Join(", ", g.Select(i => i.DNNumber)),
                            QuotationNumber = string.Join(", ", g.Select(i => i.QuotationNumber))
                            }
    

    【讨论】:

    • 非常感谢朋友。我只希望这个
    猜你喜欢
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多