C# LINQ依赖相关实体(多对多)

C# LINQ依赖相关实体(多对多),c#,sql,linq,C#,Sql,Linq,我需要返回以下选民的计票结果: 用户与选民有多对多关系。我想返回与用户相关的投票者计数。我尝试过:db.Users.voctors.Count(),但失败惨重,因为它无法识别.voctors 有没有办法直接做到这一点?这样行吗 db.Users.Voters != null ? db.Users.Voters.Count() : 0 这样行吗 db.Users.Voters != null ? db.Users.Voters.Count() : 0 我假设投票者是单个用户对象的属性,而不是用

我需要返回以下选民的计票结果:

用户
选民有多对多关系
。我想返回与
用户相关的
投票者
计数。我尝试过:
db.Users.voctors.Count()
,但失败惨重,因为它无法识别
.voctors

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

这样行吗

db.Users.Voters != null ? db.Users.Voters.Count() : 0
这样行吗

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

我假设
投票者
是单个
用户
对象的属性,而不是
用户
集合的属性。在这种情况下,一种方法是:

db.Users.Sum(user => user.Voters.Count());
但这将使用户分享的选民人数加倍。如果您想要一个不同的计数,请使用

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

我假设
投票者
是单个
用户
对象的属性,而不是
用户
集合的属性。在这种情况下,一种方法是:

db.Users.Sum(user => user.Voters.Count());
但这将使用户分享的选民人数加倍。如果您想要一个不同的计数,请使用

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

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


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

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

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