2010-08-02 9 views
0

Я уверен, что это тривиальный вопрос, но я не мог найти хороший пример. Предположим, что все, что вы хотите сделать, это изменить один атрибут для всех объектов в списке. Я хотел бы сказать примерно следующее:Простая трансформация с Linq

List<SomeType> list = ...; 

list.Select(x => x { x.Name = "Foo" }); 

Обратите внимание на отсутствие «нового» ключевого слова. Я не хочу воссоздавать объекты, которые уже существуют, просто выполните одну строку кода (в данном случае простое назначение) для каждого элемента списка.

Возможно ли это в linq каким-то изящным способом?

Заранее благодарен!

+0

Хотя предлагаемая работа решения, Linq предназначен для запросов. Не злоупотребляйте им. –

+0

@Doc Brown: Linq предназначен не только для запросов! –

+0

@Christopher Edwards: Я уверен, что вы знаете, за что стоит сокращение LINQ. И если вы не уверены, взгляните на ссылку на статью Эрика Липперта, опубликованную spender. –

ответ

2

Очень просто. MSDN ForEach - это фактически метод класса List, но он позволяет вам использовать выражения лямбда.

list.Foreach(x => x.Name = "Foo" ); 
+0

Определенно не расширение. Просто стандартный метод списка T – spender

1

Это не действительно подпадает под Linq, если вы хотите мутировать коллекцию. См. Eric Lippert's post, чтобы узнать, почему.

Попробуйте List<T>.ForEach()

+0

Почему downvote? – spender

Смежные вопросы