关于框架Linq查询的问题
本文关键字:Linq 查询 问题 框架 于框架 | 更新日期: 2023-09-27 18:26:32
代码:
IQueryable<Meet> query = _meetReadService.GetRecords()
.Include(x => x.MeetType)
.Where(x => x.EndDateTime <= DateTime.Now);
当我在上面的linq查询中添加以下行时,错误消息被抛出为
Include路径表达式必须引用在类型上定义的导航属性。对引用导航属性使用虚线路径,对集合导航属性使用Select操作符。
x => x.MeetTeamMembers.Where(e => e.MeetType.IsManager)
.Select(z => z.User.Name)
.FirstOrDefault()
我的完整代码:
IQueryable<Meet> query = _meetReadService.GetRecords()
.Include(x => x.MeetType)
.Include(x => x.MeetTeamMembers.Where(e => e.MeetType.IsManager)
.Select(z => z.User.Name)
.FirstOrDefault())
.Where(x => x.EndDateTime <= DateTime.Now);
不能在对Include
的调用中进行筛选。这意味着.Where(e => e.MeetType.IsManager)
是罪魁祸首。只有在执行查询后才能执行您想要的操作:
IQueryable<Meet> query = _meetReadService.GetRecords()
.Include(x => x.MeetType)
.Include(x => x.MeetTeamMembers)
.Select(z => z.User.Name).FirstOrDefault())
.Where(x => x.EndDateTime <= DateTime.Now);
var queryResults = query.ToList();
foreach (var meet in queryResults)
{
meet.MeetTeamMembers = meet.MeetTeamMembers.Where(e => e.MeetType.IsManager);
}