0

我需要返回以下选民的计数:

Users与 有多对多的关系Voters。我想返回Voters与 相关的计数Users。我试过这个:db.Users.Voters.Count()但失败得很惨,因为它无法识别.Voters.

有没有办法直接做到这一点?

4

3 回答 3

2

我假设.Voters是单个User对象的属性,而不是Users 集合的属性。在这种情况下,一种方法是:

db.Users.Sum(user => user.Voters.Count());

但这将重复计算用户共享的任何选民。相反,如果您想要不同的计数,请使用

d.Users.SelectMany(user=>user.Voters).Distinct().Count();
于 2013-02-06T19:35:33.537 回答
1

这行得通吗?

db.Users.Voters != null ? db.Users.Voters.Count() : 0
于 2013-02-06T19:30:26.943 回答
0

您需要使用 SelectMany 从多对多中提取匹配项。

Users.SelectMany(x => x.Voters.Where(y => y.Users.Any(z => z.Id == x.Id))).Count()

于 2013-02-06T20:29:29.800 回答