2017-12-05 2 views
0

ラムダ式にあまり経験がないので、次のコードをvb.netに変換する際に問題があります。特に最後の行が私の問題です。 Telericコードコンバータは、最後の行のために私を助けません。誰かが私を助けることができますか?VB.netにC#コードを変換する際の問題

int[] numbers = { 1, 3, 4, 9, 2, 4 }; 
int numToRemove = 4; 
int numIndex = Array.IndexOf(numbers, numToRemove); 
numbers = numbers.Where((val, idx) => idx != numIndex).ToArray(); 
+0

何を試しましたか? –

+0

https://stackoverflow.com/q/782566/1070452とhttps://stackoverflow.com/q/67916/1070452など多くの他のコード – Plutonix

答えて

0

最後の行の出力を新しい変数に保存すると、Telerikによる変換が機能します。そして、あなたはこれを取得:VB6ので、VBを使用

Private numbers As Integer() = {1, 3, 4, 9, 2, 4} 
Private numToRemove As Integer = 4 
Private numIndex As Integer = Array.IndexOf(numbers, numToRemove) 
Private result = numbers.Where(Function(val, idx) idx <> numIndex) 
+0

コードの性質から、これらの*おそらく*フィールド(すなわち、Dimの代わりにPrivate修飾子)。また、 'result'は元のC#には存在せず、OPが結果を配列に格納していた場合、IEnumerable(Of Integer)に格納します。 '.ToArray()'はそれをうまく終わらせるでしょう(とにかく 'numbers'に戻すこともできます)。 – djv

3

しない - とはいえ、これは動作します(!):

Dim numbers() = {1, 3, 4, 9, 2, 4} 
    Dim numToRemove As Integer = 4 
    Dim numIndex As Integer = Array.IndexOf(numbers, numToRemove) 
    numbers = numbers.Where(Function(ByVal val, ByVal idx) idx <> numIndex).ToArray() 

を(それはちょうど免責事項だ上記のようではないかもしれないベストプラクティスなど!)

関連する問題