计算布尔属性为true的实例数-C#

时间:2018-08-08 12:17:23

标签: c# linq ienumerable

我有一个具有bool属性的特定对象的IEnumerable。我想算一下该属性以紧凑(就代码行而言)和易读的方式设置为true的对象数。

为了演示它,创建具有布尔属性“ InnerProperty”的类“ Obj”。静态函数“ CountInner”实现了上面定义的逻辑。如何更紧凑地实现它?

public class Obj
{
    private bool InnerProperty { get; set; } = false;

    public static int CountInner(IEnumerable<Obj> list)
    {
        var count = 0;
        foreach (var l in list)
        {
            if (l.InnerProperty)
            {
                count++;
            }
        }
        return count;
    }
}

4 个答案:

答案 0 :(得分:8)

您可以使用LINQ的Count来接受谓词(“用于测试条件的每个元素的函数。”):

public static int CountInner(IEnumerable<Obj> list)
{
    return list.Count(x => x.InnerProperty);
}

答案 1 :(得分:4)

基本上与其他答案相同,但使用表达式主体成员:

public static int CountInner(IEnumerable<Obj> list) => list.Count(x => x.InnerProperty);

答案 2 :(得分:2)

您可以像下面一样使用Linq System.Linq。此外,InnerProperty应该是一个字段而不是一个属性,因为对于private属性设置器来说,这没有多大意义

public static int CountInner(IEnumerable<Obj> list)
{
    var count = list.Where(l => l.InnerProperty).Count(); 
    return count;
}

答案 3 :(得分:1)

您可以通过更简单的方式来做到这一点:

public class Obj
{
    private bool InnerProperty { get; set; } = false;

    public static int CountInner(IEnumerable<Obj> list)
    {
        return list.Count(b => b.InnerProperty);
    }
}

只需使用Lambda Expression