只获得一个具有最大值属性的子项

时间:2017-08-08 00:49:33

标签: linq entity-framework-6

我正在使用Entity Framework,我有以下代码:

var query = this._dbContext.Set<Parent>()
    .AsNoTracking()
    .Where(p => p.IsActive.Value)
    .Include(child=> p.Children)                   
    as IQueryable<Parent>;

这会给我所有的孩子。此外,孩子们有一个名为VersionNumber的属性。我应该如何编辑上面的查询,因为它只返回一个子项,即最大值为VersionNumber的子项。

请注意,对于每个Parent的子项的每条记录,VersionNumber是一个INT递增1。 父子Child.VersionNumber 1 1 1 1 2 2 2 1 1 2 1 2

1 个答案:

答案 0 :(得分:0)

您需要预测结果。

var query = this._dbContext.Set<Parent>()
    .AsNoTracking()
    .Where(p => p.IsActive.Value)
    // not necessary since you're selecting children in your projection below .Include(child => p.Children) 
    .Select(p => new Parent
    {
        Children = p.Children.OrderByDescending(c=> c.VersionNumber).Take(1),
        p.OtherProperty,
        p.AnOtherProperty,
        p.YouGetTheIdea // manual select the properties of parent you require
    }); // Not necessary  as IQueryable<Parent>