我有一个列表,这是我的一些ComboBox中的SelectedValue。
Dim AppsInt = MyApps.CheckedItems.Select(Function(x) Convert.ToInt32(x.Value)).ToList()
我有这个对象是(t)的列表
Dim myObj = New List( Of Item )
Dim FooItem = New item ( 42 )
我想要的是将我的Int列表放入我的对象中。在C#中看起来像这样的东西:
AppsInt.foreach( x => myObj .add(new Item(x) ) ) ;
到目前为止,我所做的是向我发送“不产生结果”错误:
AppsInt.ForEach( Function(it) myObj.Add(New Item(it)) )
我该怎么办?如何让这个linq lambda工作?
答案 0 :(得分:2)
你应该将功能(it)改为sub(it)。 或者:
Dim myObj = AppsInt.Select( Function(it) New Item(it)).ToArray()
答案 1 :(得分:1)
您ForEach
表达式中的Lambda表达式不会返回任何结果(编译器会向您说明)。这意味着您有两种方法可以解决它:
将return语句添加到将返回任何内容的lamda表达式中:
AppsInt.ForEach(Function(it)
myObj.Add(New Item(it))
Return 1 ' it's not matter what you will return here.
End Function)
将Function(it)
更改为Sub(it)
。 Sub
没有义务返回任何价值。
更优选第二种选择。