2013-05-15 9 views
6

Ho una lista come segue:Riorganizzare un elenco basato sul dato ordine in C#

{CT, MA, VA, NY} 

sottopongo questa lista per una funzione e ho la lista di ordine waypoint ottimale

{2,0,1,3} 

Ora devi riorganizzare la lista secondo l'ordine che è stato appena fornito. Ad esempio, dopo il riordino, l'elenco dovrebbe essere simile a:

{VA, CT, MA, NY} 

Qual è il modo ottimale per farlo? Usando linq c'è un modo?

+6

LINQ tutte le cose !!!! 11111ONEONE. Ma seriamente, solo perché stai manipolando una lista, non significa che dovresti usare Linq. In effetti, questo è abbastanza semplice che l'uso di Linq probabilmente lo rende eccessivamente complicato da – cadrell0

+5

@ cadrell0, mentre il tuo punto è ben preso, non c'è nulla di complicato nel Linq su questo. –

risposta

18

Si potrebbe provare la seguente:

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, buona soluzione LINQ semplice. –

+4

@weston La domanda afferma chiaramente che - nessuna supposizione qui :) – Li0liQ

+0

OK, mi manca capito. – weston

5

Questo mi sembra l'approccio più semplice:

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