2013-05-15 15 views
6

tôi có một danh sách như sau:Sắp xếp lại danh sách dựa trên thứ tự nhất định trong C#

{CT, MA, VA, NY} 

tôi gửi danh sách này để một chức năng và tôi nhận được danh sách tối ưu để waypoint

{2,0,1,3} 

Bây giờ tôi phải sắp xếp lại danh sách theo thứ tự mới được cung cấp. tức là sau khi sắp xếp lại, danh sách sẽ trông giống như:

{VA, CT, MA, NY} 

Cách tối ưu để làm điều đó là gì? Sử dụng LINQ có cách nào không?

+6

LINQ tất cả những điều !!!! 11111ONEONE. Nhưng nghiêm túc, chỉ vì bạn đang thao tác một danh sách, không có nghĩa là bạn nên sử dụng LINQ. Trong thực tế, điều này là đơn giản, đủ mà sử dụng LINQ có thể overcomplicates nó – cadrell0

+5

@ cadrell0, trong khi điểm của bạn được thực hiện tốt, không có gì phức tạp về Linq trên này. –

Trả lời

18

Bạn có thể thử như sau:

var list = new List<string>{"CT", "MA", "VA", "NY"}; 
var order = new List<int>{2, 0, 1, 3}; 
var result = order.Select(i => list[i]).ToList(); 
+5

+1, giải pháp LINQ đơn giản. –

+4

@weston Câu hỏi nêu rõ rằng - không có giả định ở đây :) – Li0liQ

+0

OK, tôi nhớ đã hiểu. – weston

5

Điều này có vẻ như là cách tiếp cận đơn giản nhất:

oldItems = LoadItems(); //{"CT","MA","VA","NY"}; 
List<string> newItems = List<string>(); 
foreach(int idx in returnedIndexes) 
{ 
    newItems.Add(oldItems[idx]); 
}