我需要返回以下选民的计数:
Users
与 有多对多的关系Voters
。我想返回Voters
与 相关的计数Users
。我试过这个:db.Users.Voters.Count()
但失败得很惨,因为它无法识别.Voters
.
有没有办法直接做到这一点?
我假设.Voters
是单个User
对象的属性,而不是Users
集合的属性。在这种情况下,一种方法是:
db.Users.Sum(user => user.Voters.Count());
但这将重复计算用户共享的任何选民。相反,如果您想要不同的计数,请使用
d.Users.SelectMany(user=>user.Voters).Distinct().Count();
这行得通吗?
db.Users.Voters != null ? db.Users.Voters.Count() : 0
您需要使用 SelectMany 从多对多中提取匹配项。
Users.SelectMany(x => x.Voters.Where(y => y.Users.Any(z => z.Id == x.Id))).Count()