2016-09-14 9 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) 

は私のオブジェクトにのIntの私のリストを取得することです。 C#で次のようになり何かを:

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

私がこれまで行ってきた私に「結果を生成しません」というエラーを送信しているもの:

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

私はそれをどのように行うことができますか?このlinqラムダを動作させるには?

答えて

1

ラムダ式ForEach式には、任意の結果を返していない(とコンパイラはあなたにそれを言いました)。それはあなたがそれを解決するために二つの方法があることを意味しますSub(it)に変更Function(it)

AppsInt.ForEach(Function(it) 
      myObj.Add(New Item(it)) 
      Return 1 ' it's not matter what you will return here. 
     End Function) 
    1. を返しますあなたのラムダ式にreturn文を追加します。 Subは値を返す義務がありません。

    第2のオプションがより好ましい。

  • 2

    あなたは機能(it)をsub(it)に変更する必要があります。 または:あなたの内側

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

    feeeperはもう少しはっきりしていますが、私の問題を修正したのは一番速いです。だから私の+1がある。彼は解決済みの旗を得なければならない。 –

    関連する問題