在我的C#代码中,我有一个类型为CustomClass
的列表。该类包含布尔属性trueOrFalse
。
我有List<CustomClass>
。我希望使用此List创建一个整数,该List保存列表中trueOrFalse
值为True
的对象数。
最好的方法是什么?我假设有一种聪明的方法可以使用Linq来实现这一点,而不是必须迭代每个对象?
非常感谢。
答案 0 :(得分:13)
您可以使用Enumerable.Count
:
int numTrue = list.Count(cc => cc.trueOrFalse);
请务必添加using system.Linq;
请注意,您不应使用此方法检查序列是否包含元素(list.Count(cc => cc.trueOrFalse) != 0
)。因此,您应该使用Enumerable.Any
:
bool hasTrue = list.Any(cc => cc.trueOrFalse);
不同之处在于Count
枚举整个序列,而Any
只要找到一个传递测试谓词的元素就会提前返回true。
答案 1 :(得分:4)
使用LINQ,你可以做到这一点。
int amountTrue = list.Where(c => c.trueOrFalse).Count();
或更短的计数中的位置:
int amountTrue = list.Count(c => c.trueOrFalse);
赞Tim Schmelter所述:添加using System.Linq;
答案 2 :(得分:2)
list.Count(a => a.TrueOrFalse);
我冒昧地开始给你的财产写一封大写字母。
答案 3 :(得分:1)
答案 4 :(得分:0)
var count = listOfCustomClass.Where(a => a.trueOrFalse).Count();