1

私は次のクラスを持っています

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

出力として必要な行は 1 行だけなので、最初の 2 列の値は等しくなり、1 つだけ取得され、最後の 2 列は連結されてコンマ区切りの値として取得されます。最終出力は次のようになります。

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

LINQ でこのようにグループ化する方法は?

4

1 に答える 1

3

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))
                        }
于 2014-01-13T14:56:50.143 に答える