using System.Collections.Generic;
public static void Main()
List<InvoiceProducts> list = new List<InvoiceProducts>();
list.Add(new InvoiceProducts{ InvoiceID = 7000, ProductID=15});
list.Add(new InvoiceProducts{ InvoiceID = 7000, ProductID=10});
list.Add(new InvoiceProducts{ InvoiceID = 7000, ProductID=10});
list.Add(new InvoiceProducts{ InvoiceID = 7000, ProductID=15});
list.Add(new InvoiceProducts{ InvoiceID = 7010, ProductID=12});
list.Add(new InvoiceProducts{ InvoiceID = 7010, ProductID=20});
list.Add(new InvoiceProducts{ InvoiceID = 7010, ProductID=12});
list.Add(new InvoiceProducts{ InvoiceID = 7021, ProductID=1});
list.Add(new InvoiceProducts{ InvoiceID = 7021, ProductID=1});
var result = list.GroupBy(x => x.InvoiceID)
.Select(x => x.Key + "," + String.Join(",", x.Select(z => z.ProductID).Distinct()));
foreach (var item in result)
public int InvoiceID { get; set; }
public int ProductID { get; set; }