2012-04-24 53 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)。