2013-03-20 3 views
6

Linqでインデックスの配列を使用して配列からアイテムを選択するにはどうすればよいですか?Linqでインデックスの配列を使用して配列からアイテムを選択するにはどうすればよいですか?

次のコードは動作します:

String[] A = new String[] { "one", "two", "three", "four" }; 
int[] idxs = new int[] { 1, 3 }; 
String[] B = new String[idxs.Length]; 
for (int i = 0; i < idxs.Length; i++) 
{ 
    B[i] = A[idxs[i]]; 
} 
System.Diagnostics.Debug.WriteLine(String.Join(", ", B)); 

出力:

 two, four 

forループを取り除くためにLINQの方法(または他のワンライナー)はありますか?

var b = idxs.Select(x => A[x]).ToArray(); 
+2

なぜforループを取り除きたいですか?それは遅いですか?読みにくい? –

答えて

5

あなたはSelectあなたindexとあなたのA[index]などでそれを使用することができます:

String[] A = new String[] { "one", "two", "three", "four" }; 
int[] idxs = new int[] { 1, 3 }; 
var result = idxs.Select(i => A[i]).ToArray(); 

foreach(var s in result) 
    Console.WriteLine(s); 

出力は次のようになります。ここでは

two 
four 

14

A LINQの方法は、このことだろうDEMOです。

+0

私は新しいことを学んだので+1 – Youssef

関連する問題