2010-10-25 22 views
1

У меня есть список элементов и хочу установить одну из своих свойств до определенного значения:Как выполнить операцию присваивания в лямбда-выражениях

applist.ForEach(Function(x) x.PrePaidTypeID = CInt(DBEnums.PrePaidType.NoPrepay)) 

... но мы считаем, что это просто делает булево сравнение. Есть ли способ заставить VB назначить целочисленное значение, а не сравнивать его?

ответ

1

Мы используем VB .NET 9, что, кажется, является проблемой здесь. В VB .NET 10 можно сделать следующие, в соответствии с Google работает:

applist.ForEach(Sub(x) x.PrePaidTypeID = CInt(DBEnums.PrePaidType.NoPrepay)) 

Использование Sub ключевое слово означает, что он не должен возвращать значение, так что вы можете назначить.

Похоже, наше решение состоит в том, чтобы обновить проект или использовать обычный цикл For Each.

3

Использование Sub лямбда вместо функции лямбда будет работать. Как вы заметили, только в VS2010 вы получаете lamba Sub.

Другим решением является использование многострочной лямбда. Это тоже работает только в VS2010. : (

http://msdn.microsoft.com/en-us/library/bb531253.aspx

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