Erw*_*yer 2 .net c# linq comparison operator-keyword
检查IEnumerable集合是否具有多于或少于X个元素以实现谓词的最佳方法是什么?
我目前正在使用,.Count(lambda) <= limit
但这使程序不必要地遍历整个集合.
您可以使用此表达式:.Skip(limit).Any()
等效Count() > limit
.但如果你的名单是 ICollection
,Count()
更可取的.
谓词版本:
public static bool MoreThan<TSource>(this IEnumerable<TSource> source,
Func<TSource, bool> predicate, int limit)
{
int i = 0;
foreach (var item in source)
{
if (predicate(item))
{
i++;
if (i > limit)
{
return true;
}
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
496 次 |
最近记录: |