2013-03-20 19 views
6

Làm cách nào để chọn các mục từ một mảng bằng cách sử dụng một loạt các chỉ mục với LINQ? đangLàm cách nào để chọn các mục từ một mảng bằng cách sử dụng một mảng các chỉ mục với LINQ?

Tiếp theo hoạt động:

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)); 

đầu ra:

 two, four 

Có cách nào LINQ (hoặc khác một liner) để thoát khỏi vòng lặp for?

+2

Tại sao bạn muốn loại bỏ vòng lặp for? Nó có chậm không? Khó để đọc? –

Trả lời

5

Bạn có thể sử dụng nó với Selectindex của bạn và A[index] của bạn Giống như:

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); 

Output sẽ là:

two 
four 

đây là DEMO.

14

Một LINQ cách sẽ là:

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

+1 vì tôi đã học được điều gì đó mới – Youssef

Các vấn đề liên quan