计算bool数组中真(或假)元素的数量?

Evg*_*eny 23 c# arrays boolean

假设我有一个填充了布尔值的数组,我想知道有多少元素是真的.

private bool[] testArray = new bool[10] { true, false, true, true, false, true, true, true, false, false };

int CalculateValues(bool val)
{
    return ???
}
Run Code Online (Sandbox Code Playgroud)

如果val为真,则CalculateValues应返回6,如果val为false,则返回4.

明显的解决方案:

int CalculateValues(bool val)
{
    int count = 0;
    for(int i = 0; i<testArray.Length;i++)
    {
        if(testArray[i] == val)
            count++;
    }
    return count;
}
Run Code Online (Sandbox Code Playgroud)

有"优雅"的解决方案吗?

SLa*_*aks 44

return testArray.Count(c => c)
Run Code Online (Sandbox Code Playgroud)


Chr*_*ght 35

使用LINQ.你可以做testArray.Where(c => c).Count();真正的计数或testArray.Where(c => !c).Count();用于虚假检查

  • 虽然它是相同的想法,但使用计数的条件重载的下面的答案更清晰. (7认同)

Ree*_*sey 13

您可以使用:

int CalculateValues(bool val)
{
    return testArray.Count(c => c == val);
}
Run Code Online (Sandbox Code Playgroud)

它根据您的参数处理truefalse检查val.