找到List的总和,其中property == true?

Sim*_*ely 4 .net c# linq list

在我的C#代码中,我有一个类型列表CustomClass.该类包含一个布尔属性trueOrFalse.

我有一个List<CustomClass>.我希望使用此List创建一个整数,它保存列表中具有trueOrFalse值的对象数True.

做这个的最好方式是什么 ?我假设有一种聪明的方法来使用Linq来实现这一点,而不是必须迭代每个对象?

非常感谢.

Tim*_*ter 13

你可以使用Enumerable.Count:

int numTrue = list.Count(cc => cc.trueOrFalse);
Run Code Online (Sandbox Code Playgroud)

记得加 using system.Linq;

请注意,不应使用此方法检查序列是否包含all(list.Count(cc => cc.trueOrFalse) != 0)元素.因此你应该使用Enumerable.Any:

bool hasTrue = list.Any(cc => cc.trueOrFalse);
Run Code Online (Sandbox Code Playgroud)

不同之处在于Count枚举整个序列Any,一旦找到一个通过测试谓词的元素,就会尽早返回true.