在我的 C# 代码中,我有一个 type 列表CustomClass
。此类包含一个布尔属性trueOrFalse
。
我有一个List<CustomClass>
. 我希望使用此列表创建一个整数,该列表保存列表中trueOrFalse
值为True
.
做这个的最好方式是什么 ?我认为有一种巧妙的方法可以使用 Linq 来完成此任务,而不必遍历每个对象?
非常感谢。
您可以使用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。
使用 LINQ,您确实可以做到这一点。
int amountTrue = list.Where(c => c.trueOrFalse).Count();
或者在计数中使用 Where 更短:
int amountTrue = list.Count(c => c.trueOrFalse);
正如Tim Schmelter所说:添加using System.Linq;
list.Count(a => a.TrueOrFalse);
我冒昧地在开始时给你的财产一个大写字母。
var count = listOfCustomClass.Where(a => a.trueOrFalse).Count();