我正在一个项目中显示一个BoardDto,其中包含一个IQueryable的ListDTO。每个ListDTO都包含CardDTO的IQueryable。
我怎样才能使我的BoardDto对象加载所有ListDtos,但仅使用其卡片where CardType = 1
?
public class BoardDTO
{
public int BoardId { get; set; }
public string Nome { get; set; }
public IQueryable<BoardListDTO> Lists { get; set; }
}
public class BoardListDTO
{
public int BoardListId { get; set; }
public string Name { get; set; }
public IQueryable<CardDTO> Cards { get; set; }
}
public class CardDTO
{
public long CardId { get; set; }
public CardType Type { get; set; }
}
编辑
下面的图像说明了项目必须如何构成DTO。
解决方案
这解决了我的问题:
var query = _context.Boards
.AsnoTracking()
.ProjectTo<BoardDto>(_mapper)
.Where(x => x.BoardId == id)
.Select(x => new BoardDto
{
BoardId = x.BoardId,Name = x.Name,Lists = x.Lists.Select(list => new BoardListSearchDTO
{
Cards = list.Cards.Where(x => x.Type == 1),}).FilterLists(filterListsBy,listSearchValue)
});