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

时间:2012-10-23 13:39:06

标签: c# .net linq list

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

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

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

非常感谢。

5 个答案:

答案 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)

这对LINQ来说是微不足道的:

list.Count(x => x.trueOrFalse);

只需在列表中调用Count扩展名并传递条件即可。在您的情况下,条件只是您的布尔属性。

答案 4 :(得分:0)

var count = listOfCustomClass.Where(a => a.trueOrFalse).Count();