Вы должны всегда публиковать что именно не работает .
В вашем случае вы хотите Update
список элементов, который работает, хотя и передает Action(Of T)
, который должен быть запущен для каждого элемента.
Такое действие, которое только что выполнено, выполняет некоторые побочные эффекты, но не возвращает значения, описываемого ровно одной конструкцией VB: A Sub .
Таким образом, вы хотели бы написать:
.Update(Sub(p) p.isHip = true)
, который действителен для VB2010, но просто не работает в версии 2008 года. В C # нет проблем, но в вашем VB-коде вы хотите передать Function
, который должен производить значение, а не просто выполнять присваивание. Func(Of ...)
будет подходящим типом этого выражения.
Так что же делать?
Вы не можете просто выразить то, что вы хотите в синтаксисе вашей версии. Но, вероятно, вы не должны - создавать новую коллекцию без изменения старой. Как только вы разберетесь с типами / свойствами значений, приведенный выше подход не будет работать вообще, так как на самом деле временная коллекция, возвращаемая Where
, изменяется. Linq - это не язык модификации, а система запросов.
В любом случае: просто используйте простую петлю.