是否有更简洁,更快捷的方式在Entity Framework中订购此查询?

时间:2014-08-12 00:56:13

标签: performance linq entity-framework

我的应用程序中有以下代码。它可以按我的意愿工作,但我觉得必须有一个更简洁的方法来执行此操作,而无需查询数据库,然后循环遍历代码来订购子项。关于如何以更清洁的方式做到这一点的任何想法?

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();
    }
}

其中制造商,模型和大小都是已定义的实体,并且是父对象的子级。

1 个答案:

答案 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();