2

カテゴリと製品をプロパティとして含むリストがあり、カテゴリに関連するすべての製品を別のリストに分けたいと思います。

現時点で私はこれを持っています

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のようなものを取得したいと思います。

あなたの助けと時間をありがとう

4

2 に答える 2

10

リストをカテゴリ別にサブリストに分割する場合:

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

さて、categoryListsですIEnumerable<List<Product>>

これを繰り返すには、次のように言うことができます。

foreach(var categoryList in categoryLists) {
    foreach(var product in categoryList) {
        // do something with product
    }        
}
于 2012-04-24T09:19:49.340 に答える
1

あなたが何を望んでいるのかわかりませんが、次のようなものが必要なようです。

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

これで、すべてのproductsInCategories [i]に「subList」(実際にはIEnumerable)が含まれます。

于 2012-04-24T09:30:56.380 に答える