2012-04-24 39 views
2

我有類別和產品屬性的列表,我想單獨所有有關在不同的列表類別的產品。分割列表<Product>成子列表<Product>

目前,我有這個

Products products = new Products(); 

     products.productList.Add(new Products("Fruit", "Apples")); 
     products.productList.Add(new Products("Fruit", "Oranges")); 
     products.productList.Add(new Products("Fruit", "Bananas")); 
     products.productList.Add(new Products("Fruit", "Grapes")); 
     products.productList.Add(new Products("Vegetables", "Tomatoes")); 
     products.productList.Add(new Products("Vegetables", "Lettuce")); 
     products.productList.Add(new Products("Vegetables", "Onions")); 
     products.productList.Add(new Products("Dairy", "Milk")); 
     products.productList.Add(new Products("Dairy", "Yogurth")); 
     products.productList.Add(new Products("Dairy", "Eggs")); 

     List<IEnumerable<string>> distinctCats = products.productList.GroupBy(s => s.Category).Select(s => s.Select(v => v.Product)).ToList(); 

但我似乎無法從distinctCats得到的值。我想用正常的列表產品列表獲得具有實際值的東西。

感謝您的幫助和時間

+0

你期待什麼輸出?一個不同類別的清單,還是一個帶有該類別產品清單的類別清單? – Jamiec 2012-04-24 09:19:33

回答

10

如果你想按類別劃分的清單到子列表:

var categoryLists = products.GroupBy(p => p.Category) 
          .Select(g => g.ToList()); 

現在,categoryListsIEnumerable<List<Product>>

遍歷這一點,你可以說:

foreach(var categoryList in categoryLists) { 
    foreach(var product in categoryList) { 
     // do something with product 
    }   
} 
+0

您好傑森是我想了var categoryLists = products.GroupBy(p值=> p.Category)。選擇(G => g.ToList());但是我怎樣才能獲得類別和產品列表呢? – Johann 2012-04-24 09:25:37

+0

@Johann:看我的編輯。 – jason 2012-04-24 09:27:34

+0

優秀!非常感謝傑森的幫助! – Johann 2012-04-24 09:30:28

1

不知道我理解你想要什麼,但似乎你需要財產以後這樣的:

var products=new List<Product>{}; 
var productsInCategories=products.ToLookup(p=>p.Category); 

現在每productsInCategories [I]含有一個「subList」(實際上是IEnumerable)。