繁体   English   中英

如何检查布尔列表中的值?

[英]How do I check a value in a boolean List?

我有这个List: List<bool> values = new List<bool>();

填充: True,True,False,True,False,False,True

当我这样做: int amountTrue = values.Count(v => true); 它返回7 这只是List中的值。 我认为它检查值是否存在,但这不是我想要的。

如何使用Count或任何其他可链接方法获取List中的True值? 我知道我可以循环使用它,但我认为这可以更轻松。

Count方法可以采用谓词,它基本上是一个返回布尔值的方法。 在这种情况下, Count方法计算“传递”谓词的项目数。 你正在做的说:“对每个项目,检查是否true是真实的”,这是很明显,总是如此。 你想要做的是检查每个是否为真,你可以这样做:

values.Count(v => v);

或者是手写的

values.Where(v => v).Count();
List<bool> values = new List<bool>() { true, true, false, true, false, false, true };

Console.WriteLine(values.Count(v => v == true)); //output : 4
Console.WriteLine(values.Count(v => v == false)); //output : 3

//equivalent
Console.WriteLine(values.Count(v => v)); //v == true, output : 4
Console.WriteLine(values.Count(v => !v)); //v == false, output : 3

控制台输出:

4

3

4

3

布尔列表不包含相关数据,例如其他查询的键或值,您可能只想使用增量整数等替代解决方案。 使用当前的解决方案,列表解决方案,当列表将增加数千个值时,将需要更多的CPU时间来计算所有元素和更多内存来存储所有元素。

替代方案:

int nbTrue = 0; // choose a significant name
int nbFalse = 0; // choose a significant name

nbTrue++;
nbFalse++;

var count = values.Count(v => true == v)

values.Count(v => v); 根据v values.Count(v => true)的值返回结果; 总是回归真实。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM