获取具有子项的父项计数

时间:2017-06-28 15:41:54

标签: c# linq expression

        var totalParentsWithThisChild =
            (from p in parent
             from c in parent.Child
             where c.someField > someValue
             select parent
            ).Count();

这似乎让我的孩子有一些提起> somevalue,

我喜欢计算有孩子的父母,其中someField> someValue,我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您可以使用Any检查是否有符合条件的孩子。并且你可以使用带有谓词的Count来查找有这些孩子的父母的数量:

parent.Count(p => p.Child.Any(c => c.someFiled > someValue))

注意:我建议您使用复数形式的名称来收集:父母,孩子

略微查询语法:

var totalParentsWithThisChild = 
     (from p in parent
      where p.Child.Any(c => c.someFiled > someValue)
      select p).Count()

因为查询语法中不支持AnyCount扩展方法。为避免丑陋的括号,您可以将此查询分为两部分:

var parentsWithThisChild = 
      from p in parent
      where p.Child.Any(c => c.someFiled > someValue)
      select p;

var totalParentsWithThisChild = parentsWithThisChild.Count();

但同样,在这种情况下,纯方法语法要短得多。