One, Two, MoreThanOne, AtLeast, AnyAtAll
public static bool One(this IEnumerable enumerable)
{
using (var enumerator = enumerable.GetEnumerator())
return enumerator.MoveNext() && !enumerator.MoveNext();
}
public static bool Two(this IEnumerable enumerable)
{
using (var enumerator = enumerable.GetEnumerator())
return enumerator.MoveNext() && enumerator.MoveNext() && !enumerator.MoveNext();
}
public static bool MoreThanOne(this IEnumerable enumerable)
{
return enumerable.Skip(1).Any();
}
public static bool AtLeast(this IEnumerable enumerable, int count)
{
using (var enumerator = enumerable.GetEnumerator())
for (var i = 0; i < count; i++)
if (!enumerator.MoveNext())
return false;
return true;
}
public static bool AnyAtAll(this IEnumerable enumerable)
{
return enumerable != null && enumerable.Any();
}