Следующее будет работать только в VB 10. Предыдущие версии не поддерживали многострочные лямбды.
Dim d = source.Aggregate(0.0,
Function(total, next)
total += (next - avg) ^ 2
Return total
End Function)
Function(foo) bar
соответствует лямбде с одним выражением (foo) => bar
в C #, но здесь вам нужна многострочная лямбда, которая существует только после VB 10.
Однако я настороженно отношусь к оригинальному коду. Изменение total
кажется ошибкой, поскольку перегрузка Aggregate
не передает свои аргументы по ссылке. Поэтому я предполагаю, что исходный код неверен (даже если он может на самом деле компилироваться) и что правильное решение (в VB) будет выглядеть так:
Dim d = source.Aggregate(0.0, _
Function(total, next) total + (next - avg) ^ 2)
Кроме того, для этого не требуются многострочные лямбды, и, следовательно, он также работает на более старых версиях VB.