2016-09-14 3 views
1

나는 그것의 목록을 가지고 있는데, 그것은 ComboBox의 SelectedValue입니다.linq 람다 식에서 문

Dim AppsInt = MyApps.CheckedItems.Select(Function(x) Convert.ToInt32(x.Value)).ToList() 

와 나는 (t의) 목록입니다이 객체

Dim myObj = New List(Of Item) 
Dim FooItem = New item (42) 

내가 원하는 것은 내 객체로 지능의 내 목록을 얻을 수 있습니다 있습니다. C#으로 같을 것이다 뭔가 :

AppsInt.foreach(x => myObj .add(new Item(x))) ; 

내가 지금까지했던 나에게 "결과를 생성하지 않는"오류를 보내는 무엇 :

AppsInt.ForEach(Function(it) myObj.Add(New Item(it))) 

내가 그것을 어떻게 할 수 있습니까? 이 linq 람다 작동시키는 방법?

답변

1

람다 표현하면 내부 ForEach 표현은 어떤 결과를 반환하지 않습니다 (그리고 컴파일러에게 말했다).

  1. 추가 return 문 당신의 람다 식에 아무것도를 반환합니다 :

    AppsInt.ForEach(Function(it) 
          myObj.Add(New Item(it)) 
          Return 1 ' it's not matter what you will return here. 
         End Function) 
    
  2. 변경 Sub(it)Function(it) 그것은 당신이 그것을 해결하는 방법은 두 가지가 있다는 것을 의미한다. Sub은 값을 반환하지 않아도됩니다.

두 번째 옵션이 더 바람직합니다.

2

sub (it)로 기능을 변경해야합니다. 는 또는 :

Dim myObj = AppsInt.Select(Function(it) New Item(it)).ToArray() 
+0

feeeper는 좀 더 분명하지만 가장 빠른 일명 내 문제를 해결 한 곳입니다. 그래서 당신은 내 +1을가집니다. 하지만 그는 해결 된 깃발을 얻어야합니다. –

관련 문제