Установить свойство для каждого элемента в коллекции - PullRequest
4 голосов
/ 09 октября 2011

У меня есть IEnumerable, и я пытаюсь вызвать «Text» для каждого элемента перечисляемого элемента.
Я могу сделать:

foreach (Data d in DataEnumerable)
{
    d.Text="123";
}

Я также могу сделать:

DataEnumerable.All(x =>
    {
        x.Text = "123";
        return true;
    });

Как лучше всего вызывать метод set для каждого элемента перечислимого типа?

1 Ответ

10 голосов
/ 09 октября 2011

Первый способ лучше.

Вторым является злоупотребление из Enumerable.All. Этот метод предназначен для тестирования всех элементов Enumerable и проверки их соответствия условию. Вы здесь этого не делаете.

Существует метод List.ForEach, который можно использовать для такого рода операций обновления, но команда LINQ решила не добавить соответствующий метод в Enumerable. См. Блог Эрика Липперта для подробностей о почему было принято это решение:

...