在 LINQ 中提取子实体满足特定条件的项

本文关键字:满足 特定条件 实体 LINQ 提取 | 更新日期: 2023-09-27 18:27:38

我正在尝试返回TrackInformationRecord的列表,由以下人员完成:

return _trackInformationRepository
           .Fetch(t => t.TrackPartId == trackPart.Id && t.IsDeleted == false)
           .ToList();

但是,TrackInformationRecord 包含 TrackInformationRecord.Sessions 中的 SessionInformationRecord 列表,我只想使用 IsDelete == false 进行会话。

我尝试了以下方法,但没有用:

return _trackInformationRepository
      .Fetch(t => t.TrackPartId == trackPart.Id && t.IsDeleted == false 
         && t.Sessions.Where(s => s.IsDeleted == false))
      .ToList();

任何建议将不胜感激。

在 LINQ 中提取子实体满足特定条件的项

如果要确保所有会话的对象 IsDeleted(都应为 false(,则需要All

return _trackInformationRepository
      .Fetch(t => t.TrackPartId == trackPart.Id && !t.IsDeleted
                   && t.Sessions.All(s => !s.IsDeleted)).ToList();

但是,如果您希望任何会话的对象IsDelete为假,则需要Any -

return _trackInformationRepository
      .Fetch(t => t.TrackPartId == trackPart.Id && !t.IsDeleted
                   && t.Sessions.Any(s => !s.IsDeleted)).ToList();

附带说明一下,与其写t.IsDeleted == false,不如像!t.IsDeleted一样写。