在linq实体框架中计数孩子匹配
我尝试计算每个父级的父元素在列表中的子元素的数量(如果是整数)。 但是伯爵并不正确。 难道不可能做出这样的查询吗? 这样做的正确方法是什么?
List<int> ids = [1, 2, 3];
var counts = (from d in db.Parent where ids.Contains(d.Id) select d.Child.Count()).ToList();
假设Child是一个集合,因为你正在计算它。 尝试以下操作: var counts = db.Parent.Where(x => ids.Contains(x.Id)).SelectMany(x => x.Child).Count();
“计数”将在IEnumerable上运行。 不过,您似乎正在尝试使用IEnumerables集合。 在这些情况下,使用“SelectMany”,以便将所有生成的集合合并为一个集合。
该查询确实是我想要的,对此表示遗憾。 我的问题是,ids列表没有排序,并以某种方式使查询不排序输出为ids列表排序。 通过对id列表进行排序(ids.Orderby(id)),这个问题就解决了。
一个计数列表并没有别的可能提供足够的信息,但通常关于包含实体的一些信息将是有用的(如果只是为了防止混淆):
List<int> ids = [1, 2, 3];
var counts = (from d in db.Parent where ids.Contains(d.Id)
select new
{
Parent = d.Name,
ChildCount = d.Child.Count()
}).ToList();
链接地址: http://www.djcxy.com/p/37661.html