Какова цель использования Select (x => x) в пакетном методе?

Я просматривал исходный код Batch , и я видел это:

// Select is necessary so bucket contents are streamed too
yield return resultSelector(bucket.Select(x => x));

Есть комментарий, который я не совсем понял. Я проверил этот метод без использования Select, и он работал хорошо. Но, похоже, что-то мне не хватает. Я не могу придумать ни одного примера, где это было бы необходимо, так какова реальная цель использования Select(x => x) здесь?

Вот полный исходный код для справки:

private static IEnumerable<TResult> BatchImpl<TSource, TResult>(
        this IEnumerable<TSource> source,
        int size,
        Func<IEnumerable<TSource>, TResult> resultSelector)
    {
        TSource[] bucket = null;
        var count = 0;

        foreach (var item in source)
        {
            if (bucket == null)
                bucket = new TSource[size];

            bucket[count++] = item;

            // The bucket is fully buffered before it's yielded
            if (count != size)
                continue;

            // Select is necessary so bucket contents are streamed too
            yield return resultSelector(bucket.Select(x => x));

            bucket = null;
            count = 0;
        }

        // Return the last bucket with all remaining elements
        if (bucket != null && count > 0)
            yield return resultSelector(bucket.Take(count));
    }
7 голосов | спросил Selman Genç 11 ThuEurope/Moscow2014-12-11T16:38:08+03:00Europe/Moscow12bEurope/MoscowThu, 11 Dec 2014 16:38:08 +0300 2014, 16:38:08

0 ответов


Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132