将列表<产品>拆分为子列表<产品>
本文关键字:产品 列表 拆分 | 更新日期: 2023-09-27 18:32:01
我有一个包含类别和产品作为属性的列表,我希望将属于类别的所有产品分开在不同的列表中。
目前我有这个
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();
但我似乎无法从不同的猫那里获得值。 我想得到一个类似普通列表产品列表的东西,带有实际值。
感谢您的帮助和时间
如果要按类别将列表划分为子列表:
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
}
}
不确定我是否理解您想要什么,但似乎您需要这样的东西:
var products=new List<Product>{};
var productsInCategories=products.ToLookup(p=>p.Category);
现在每个产品在类别[i]中都包含一个"子列表"(实际上是IEnumerable)。