首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将List<Product>拆分成SubLists<Product>

将List<Product>拆分成SubLists<Product>
EN

Stack Overflow用户
提问于 2012-04-24 17:16:23
回答 2查看 4.8K关注 0票数 2

我有一个以类别和产品为属性的列表,我希望将属于一个类别的所有产品分离到不同的列表中。

现在我有了这个

代码语言:javascript
复制
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。

感谢您的帮助和时间

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-24 17:19:49

如果要按类别将列表划分为子列表,请执行以下操作:

代码语言:javascript
复制
var categoryLists = products.GroupBy(p => p.Category)
                            .Select(g => g.ToList());

现在,categoryLists是一个IEnumerable<List<Product>>

要对此进行迭代,您可以说:

代码语言:javascript
复制
foreach(var categoryList in categoryLists) {
    foreach(var product in categoryList) {
        // do something with product
    }        
}
票数 10
EN

Stack Overflow用户

发布于 2012-04-24 17:30:56

我不确定我明白你想要什么,但看起来你需要这样的东西:

代码语言:javascript
复制
var products=new List<Product>{};
var productsInCategories=products.ToLookup(p=>p.Category);

现在每个productsInCategoriesi都包含一个"subList“(实际上是IEnumerable)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10295043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档