我的应用程序中有以下代码。它可以按我的意愿工作,但我觉得必须有一个更简洁的方法来执行此操作,而无需查询数据库,然后循环遍历代码来订购子项。关于如何以更清洁的方式做到这一点的任何想法?
var manufacturers = _Context.Manufacturers.Where(x=>x.IsActive).ToList();
foreach (var manufacturer in manufacturers)
{
manufacturer.Models = manufacturer.Models.OrderBy(m => m.Name).ToList();
foreach (var model in manufacturer.Models)
{
model.Sizes = model.Sizes.Where(m => m.Approved).OrderBy(m => m.SortOrder).ThenBy(m=>m.Size).ToList();
}
}
其中制造商,模型和大小都是已定义的实体,并且是父对象的子级。
答案 0 :(得分:0)
尝试使用匿名类型:
var theThingsYouWant = _Context.Manufacturers
.Where(man => man.IsActive)
.Select(man => new
{
Manufacturer = man,
Models = man.Models.OrderBy(m => m.Name),
Sizes = man.Models.SelectMany(m => m.Sizes).Where(s => s.Approved).OrderBy(m => m.SortOrder).ThenBy( m => m.Size),
})
.ToList();