首页 > 解决方案 > 如何在实体框架 linq“.Include”中包含父级的 FirstOrDefault 子级

问题描述

我想用他的所有组件选择评估,并且只选择每个组件的第一个答案。

QueryFutureEnumerable<Evaluation> deferredEvaluations = db.Evaluations
    .Include(e => e.Components)
    .Include(e => e.Components.Select(c => c.Answers).FirstOrDefault())
    .Where(e => e.Deprecated == false)
    .OrderByDescending(e => e.LastModified)
    .Future();

我需要帮助来确定如何仅包含第一个 Answer 孩子。

这是我已经尝试过但不起作用的方法:

 .Include(e => e.Components.Select(c => new List<Answer>(){ c.Answers.FirstOrDefault()} ))
 .Include(e => e.Components.Select(c => new { Answer = c.Answers.FirstOrDefault()}))
 .Include(e => e.Components.Select(c => c.Answers.Take(1)))

注意:我使用的是 Z.EntityFramework.Plus;但我认为我想要完成的查询部分与此无关。

当它不起作用时,“我收到错误:包含路径表达式必须引用在类型上定义的导航属性......”

标签: c#linqentity-framework-6

解决方案


推荐阅读