using System.Collections;
using System.Collections.Generic;
public int InvoiceID { get; set; }
public int ProductID { get; set; }
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 lookup = list.Select(x => new { x.InvoiceID, x.ProductID })
.ToLookup(x => x.InvoiceID, x => x.ProductID);
Console.WriteLine(x.Key);