我有一个产品列表,多个选项属于不同的选项组。出于显示目的,每个组还具有排序顺序。
我的问题是如何使用 Linq GroupBy()或其他Linq方法创建列表以返回组密钥和组排序顺序以及列表中产品的选项列表?我发现的所有示例只返回组密钥和组项列表。
这是我到目前为止所拥有的:
productList = db.Products.Where(p => p.Active)ToList();
productListOptions = productList.SelectMany(p => p.Options).Distinct().ToList();
var groupedOptions = from o in productListOptions
group o by o.OptionGroup into g
select new { OptionGroupName = g.Key.Name, OptionGroupSortOrder = g.Key.SortOrder, OptionList = g.ToList() };
谢谢!
答案 0 :(得分:1)
var model = db.Products
.Include(p=>p.Options)
.Include(p=>p.Options.Select(o=>o.OptionGroup))
.Where(p=>p.Active);
foreach(var product in model)
foreach(var optiongroup in product
.GroupBy(p=>p.Options.OptionGroup)
.OrderBy(og=>og.SortOrder))
{
// Do stuff at start of group
foreach(var option in optiongroup)
// Do stuff for each option
// Do stuff at end of group
}