我应该检索Tickets,其中,对于每个消息,最后一条消息的TeamId不为空。
带代码:
var test1 = await _context.Tickets.Include(x => x.Messages)
.Where(x => x.Messages.OrderByDescending(y => y.InsertDate).First().TeamId != null).ToListAsync();
var test2 = await _context.Tickets.Include(x => x.Messages)
.Where(x => x.Messages.Last().TeamId != null).ToListAsync();
两者都返回所有票证,即使是在TeamId为null的Messages中只包含一个元素的票证。
如果的最后一个元素的TeamId不为null,那么获取Tickets的正确查询是什么?
如果您使用的是EF core 5,那么过滤后的include可能会起作用,尽管我不记得是否支持First()
。试试看。
此外,我没有办法检查这个代码-我在手机上打字,所以你应该验证它。
var test1 = await _context.Tickets
.Include(x => x.Messages.Where(x => x.Messages.OrderByDescending(y => y.InsertDate).First().TeamId != null))
.Where(x => x.Messages != null)
.ToListAsync();