C# 拆分列表<;产品>;分为子列表<;产品>;
我有一个以类别和产品为属性的列表,我希望在不同的列表中分离属于某个类别的所有产品 现在我有这个C# 拆分列表<;产品>;分为子列表<;产品>;,c#,linq,c#-4.0,linq-to-objects,C#,Linq,C# 4.0,Linq To Objects,我有一个以类别和产品为属性的列表,我希望在不同的列表中分离属于某个类别的所有产品 现在我有这个 Products products = new Products(); products.productList.Add(new Products("Fruit", "Apples")); products.productList.Add(new Products("Fruit", "Oranges")); products.productList.A
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();
Products=新产品();
产品。产品列表。添加(新产品(“水果”、“苹果”));
产品。产品列表。添加(新产品(“水果”、“橙子”);
产品。产品列表。添加(新产品(“水果”、“香蕉”);
产品。产品列表。添加(新产品(“水果”、“葡萄”));
产品。产品列表。添加(新产品(“蔬菜”、“西红柿”);
添加(新产品(“蔬菜”、“莴苣”);
添加(新产品(“蔬菜”、“洋葱”);
产品。产品列表。添加(新产品(“乳制品”、“牛奶”));
添加(新产品(“乳制品”、“酸奶”);
产品。产品列表。添加(新产品(“乳制品”、“鸡蛋”);
List distinctCats=products.productList.GroupBy(s=>s.Category).Select(s=>s.Select(v=>v.Product)).ToList();
但我似乎无法从distinctcat中获取值。我想得到一个普通的列表productList和实际值
感谢您的帮助和时间如果您想按类别将列表划分为子列表:
var categoryLists = products.GroupBy(p => p.Category)
.Select(g => g.ToList());
现在,categoryLists
是一个IEnumerable
要反复讨论这个问题,您可以说:
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);
var产品=新列表{};
var productsInCategories=products.ToLookup(p=>p.Categories);
现在,每个productsInCategories[i]都包含一个“子列表”(实际上是IEnumerable)。您希望得到什么样的输出?不同类别的列表,或包含该类别中产品列表的类别列表?嗨,Jason,是的,我想要var categoryLists=products.GroupBy(p=>p.Category)。选择(g=>g.ToList());但是我如何在其中迭代以获得类别和产品列表呢?