Метод-расширение последовательности в C#
Метод расширения - статический метод с первым параметром this IEnumerable<T>, который компилятор позволяет вызывать как instance-метод цепочки LINQ.
Так выносят повторяющиеся фильтры и проекции в переиспользуемые операции, не меняя исходный тип массива или списка.
Расширение обрежет последовательность при первом неположительном элементе. После -1 генератор останавливается, и число 3 в результат уже не попадает:
int[] data = { 1, 2, -1, 3 };
Console.WriteLine(string.Join(", ", data.TakeWhilePositive())); // выведет 1, 2
static class SeqExtensions
{
public static IEnumerable<int> TakeWhilePositive(this IEnumerable<int> src)
{
foreach (int item in src)
{
if (item <= 0) yield break;
yield return item;
}
}
}
Отфильтруйте список слов, оставив только те, что длиннее двух символов, и выведите их.