2014-01-13 16 views
0

其他列我有下面的類分組類似的列並連接在LINQ

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中這樣分組?

回答

2

您可以使用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)) 
         } 
+0

感謝很多朋友。我只期待這一點 – Akhil