LINQ获得相关实体的计数(多对多)

本文关键字:实体 LINQ | 更新日期: 2023-09-27 17:57:55

我需要返回以下投票者的计数:

CCD_ 1与CCD_。我想返回与Users相关的Voters计数。我试过这个:db.Users.Voters.Count(),但失败得很惨,因为它不识别.Voters

有什么方法可以直接做到这一点吗?

LINQ获得相关实体的计数(多对多)

我假设.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()