LINQ依靠相关实体(多对多)

时间:2013-02-06 19:28:04

标签: c# sql linq

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

UsersVoters有很多关系。我想返回与Voters相关的Users计数。我已经尝试了这个:db.Users.Voters.Count()但由于无法识别.Voters而失败了。

有没有办法直接这样做?

3 个答案:

答案 0 :(得分:2)

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

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

但这将重复计算用户共享的所有选民。如果您想要 distinct 计数,请使用

d.Users.SelectMany(user=>user.Voters).Distinct().Count();

答案 1 :(得分:1)

这会有用吗?

db.Users.Voters != null ? db.Users.Voters.Count() : 0

答案 2 :(得分:0)

您需要使用SelectMany将匹配从多个提取到多个。

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