1

代码:

IQueryable<Meet> query = _meetReadService.GetRecords()
                                 .Include(x => x.MeetType)
                                 .Where(x => x.EndDateTime <= DateTime.Now);

当我将以下行添加到上述 linq 查询时,错误消息被抛出为

包含路径表达式必须引用在类型上定义的导航属性。对引用导航属性使用虚线路径,对集合导航属性使用 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);
4

1 回答 1

0

您不能在对 的调用中进行过滤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);
}
于 2013-08-06T11:46:40.667 回答