4

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

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

做这个的最好方式是什么 ?我认为有一种巧妙的方法可以使用 Linq 来完成此任务,而不必遍历每个对象?

非常感谢。

4

5 回答 5

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。

于 2012-10-23T13:41:40.183 回答
4

使用 LINQ,您确实可以做到这一点。

int amountTrue = list.Where(c => c.trueOrFalse).Count();

或者在计数中使用 Where 更短:

int amountTrue = list.Count(c => c.trueOrFalse);

正如Tim Schmelter所说:添加using System.Linq;

于 2012-10-23T13:41:04.743 回答
2
 list.Count(a => a.TrueOrFalse);

我冒昧地在开始时给你的财产一个大写字母。

于 2012-10-23T13:42:00.390 回答
1

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

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

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

于 2012-10-23T13:41:46.287 回答
0
var count = listOfCustomClass.Where(a => a.trueOrFalse).Count();
于 2012-10-23T13:42:38.457 回答