如何检查布尔列表中的值
本文关键字:列表 布尔 何检查 检查 | 更新日期: 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
控制台输出:
43
43
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