【问题标题】:Get only one child with max value of a property只获取一个属性最大值的孩子
【发布时间】:2017-08-08 15:29:01
【问题描述】:

我正在使用实体框架,我有以下代码:

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

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

请注意 VersionNumber 是一个加 1 的 INT,对于每个 Parent 的孩子的每个记录。 父子 Child.VersionNumber 1 1 1 1 2 2 2 1 1 2 1 2

【问题讨论】:

  • 。 OrderByDescending(a=>a.VersionNumber).Take(1)?

标签: linq entity-framework-6


【解决方案1】:

您需要对结果进行预测。

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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多