Добавление значений в список внутри foreach - PullRequest
0 голосов
/ 07 мая 2020

то, что я хочу сделать, это добавить, например, класс в IEnumerable после спецификации c check

public static IEnumerable<T> GroupBy<T, O> (this IEnumerable<T> list, Func<T, O> filter)
    {
        List<IEnumerable<T>> grouped = new List<IEnumerable<T>>();

        foreach (var item in list)
        {
            foreach (var g in grouped)
            {
                foreach (var p in g)
                {
                    if (filter(p).Equals(filter(item)))
                    {
                        // Add item to g
                    }
                }
            }
        }
    }

Возможно ли что-то подобное в foreach?

1 Ответ

0 голосов
/ 07 мая 2020

Нет, это невозможно: каждый раз, когда вы меняете исходную коллекцию, foreach нужно запускать заново. Вам понадобится отдельная коллекция для промежуточного накопления, а затем присоединитесь к этой коллекции с помощью grouped.

Кроме того, ваши алгоритмы работают некорректно: второй foreach никогда не начнет работать, так как на первой итерации в коллекции grouped не будет элементов. Таким образом, вы просто выполните итерацию list без применения каких-либо logi c к его элементам.

...