使用LINQ Enumerable All避免冗余
本文关键字:冗余 All LINQ Enumerable 使用 | 更新日期: 2023-09-27 18:22:38
当T
是布尔数组时,我经常觉得IEnumerable<T>.All
方法是多余的。
给定以下示例代码,是否有更好的方法来验证使用All方法
bool isOrdered = firstList
.Zip(secondList, (first,second)=>first==second)
.All(areSame => areSame); /* feels redundant */
在其他一些语言中,只需调用.All()
就可以确保所有元素都为true。在没有akward .All(x=>x)
的c#中,这样的事情可能吗
在All
运算符中不能避免谓词。它是签名的一部分,不是可选的:
public static bool All<TSource>(this IEnumerable<TSource> source,
Func<TSource, bool> predicate)
您可以创建自己的All
(或更好的AllTrue
)扩展,专门用于布尔值集合:
public static bool AllTrue(this IEnumerable<bool> source)
{
return source.All(b => b);
}
public static bool AllFalse(this IEnumerable<bool> source)
{
return source.All(b => !b);
}
用法:
bool isOrdered = firstList
.Zip(secondList, (first,second) => first == second)
.AllTrue();