2012-04-24 11 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から値を取得するように見えることはできません現時点では

。そして、私は実際の値を持つ通常のリストproductListのようなものを取得したいと思います。あなたの助けと

+0

期待している出力は何ですか?異なるカテゴリのリスト、またはそのカテゴリの製品のリストを含むカテゴリのリスト? – Jamiec

答えて

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

こんにちはJasonはいvar categoryLists = products.GroupBy(p => p.Category).Select(g => g.ToList());カテゴリと製品のリストを取得するには、その内部をどのように反復することができますか? – Johann

+0

@Johann:私の編集を参照してください。 – jason

+0

優秀!ジェイソンにお手伝いをしてくれてありがとう! – Johann

1

ない私はあなたが欲しいものを理解することを確認していますが、このように気にいらを必要とするようだ:

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

今すぐすべてのproductsInCategories [i]が含まれています"subList"(実際にはIEnumerable)です。

関連する問題