实体框架-基于子集合获取父对象



我应该检索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();

最新更新