如何检查布尔列表中的值

本文关键字:列表 布尔 何检查 检查 | 更新日期: 2023-09-27 18:11:55

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

满:True,True,False,True,False,False,True

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

我如何通过使用Count或任何其他可链方法获得列表中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

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

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

备选方案:

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

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