2013-05-15 12 views
6

mam listę w następujący sposób:Przegrupuj listę na podstawie danego zlecenia w C#

{CT, MA, VA, NY} 

przesłać tę listę do funkcji i uzyskać listę optymalny zamówić waypoint

{2,0,1,3} 

Teraz trzeba zmienić kolejność według kolejności, która jest nowo dostarczona. to znaczy po rozmieszczanie, lista powinna wyglądać następująco:

{VA, CT, MA, NY} 

jaki jest optymalny sposób to zrobić? Korzystanie z linq jest jakiś sposób?

+6

LINQ wszystkich rzeczy !!!! 11111ONEONE. Ale poważnie, tylko dlatego, że manipulujesz listą, nie oznacza, że ​​powinieneś używać Linq. W rzeczywistości, ten jest wystarczająco prosty, że użycie Linq prawdopodobnie nadmiernie skomplikuje ten kod: – cadrell0

+5

@ cadrell0, podczas gdy twój punkt jest dobrze zrobiony, nie ma nic skomplikowanego w Linq na tym. –

Odpowiedz

18

można spróbować następujących czynności:

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, dobre proste rozwiązanie LINQ. –

+4

@weston Pytanie jasno stwierdza, że ​​- nie ma tu żadnych założeń :) – Li0liQ

+0

OK, brakuje mi zrozumienia. – weston

5

To wydaje się najprostszym podejściem:

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