Is there a Linq method to check whether a collection contains at least x items?
.Any()
is great because as soon as one item is found, it will be true and the program won't need to go and get whatever else might be in the collection.
Is there a ContainsAtLeast()
method - or how could one implement it to behave like .Any()
?
What I'm asking for is behavior like .Any()
so I can avoid using .Count()
and do .AtLeast(4)
, so if it finds 4 items, it returns true.
You can call Skip
for the minimum number minus 1, and then check if there are any left:
public static bool AtLeast(this IEnumerable<T> source, int minCount)
{
return source.Skip(minCount - 1).Any();
}
Note that for large counts, if your source implements ICollection<T>
, this could be significantly slower than using Count
. So you might want:
public static bool AtLeast(this IEnumerable<T> source, int minCount)
{
var collection = source as ICollection<T>;
return collection == null
? source.Skip(minCount - 1).Any() : collection.Count >= minCount;
}
(You might want to check for the non-generic ICollection
too.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With