2017-05-11 10 views
0

をペアでアイテムを送信するためにvb.netでジッパーを使用して、私はConsole.WriteLineを印刷するために、文字列のリストにダブルスの二つのリストから項目を結合するために管理している:ます。Console.WriteLineに二つのリストから

Dim list3 = list1.Zip(Of Double, String)(list2, Function(x, y) x.ToString + vbTab + y.ToString) 
For Each n In list3 
    Console.WriteLine(n) 
Next 

上記の行は問題なく動作します。しかし、私はこれらを1つの操作に組み合わせることができるかどうか疑問に思っていました。私は、ネストされたサブデリゲート「(ダブル、ダブル、オブジェクトの)のFunc」と互換性のある署名を持っていないという警告が表示され

list1.Zip(Of Double, Object)(list2, Sub(x, y) Console.WriteLine(x.ToString + vbTab + y.ToString)) 

:私はコンパイルに失敗し、次のコードを、試してみました。最初の署名を(Double、Objectの)から(Double、Double、Objectの)に変更すると、ネストされたサブのエラーが修正されますが、list1.Zipの新しいエラーが生成されます。私はおそらく何かを明らかにしていませんが、誰かが私を解決策に導くことができれば感謝しています。

NB。私は 'Option Infer On'で作業中です

答えて

0

列挙可能なリストで直接呼び出すことができるForEach拡張メソッドを提供するサードパーティのライブラリが少なくとも1つあります。必要はありません

list1.Zip(list2, Function(x, y) x & vbTab & y) 

:に

list1.Zip(Of Double, String)(list2, Function(x, y) x.ToString + vbTab + y.ToString) 

:私もからあなたの元のコードを簡素化している

Array.ForEach(list1.Zip(list2, 
         Function(x, y) x & vbTab & y). 
        ToArray(), 
       Sub(s) Console.WriteLine(s)) 

注意:それらの一つが存在しない場合には、あなたはArray.ForEachを使用することができます推測することができるので、Zipメソッドのジェネリック型を指定します。また、加算演算子+ではなく、連結演算子&を使用して連結する必要があります。これは、Stringsに連結が排他的に実行されるため、ToStringを番号に呼び出す必要がないことを意味し、変換はオペレータに組み込まれています。より正確には、演算子は、String型と数値型のように定義されています。

関連する問題