2010-10-26 11 views
7

Ho un ciclo for in cui voglio OrderBy il nome in ordine alfabeticoC'è un modo di usare orderby in un C# forloop?

a 
b 
c 
d 

cercando come fare questo, si chiedeva anche se potevo usare LINQ orderby all'interno del forloop?

+1

Cosa stai cercando di realizzare esattamente? – R0MANARMY

+0

Un ciclo di quello? Un loop di stringhe? Vuoi ordinare queste corde per nome? Se è così, basta fare yourList.OrderBy(); In caso contrario, fornirci ulteriori informazioni. Anche il codice è benvenuto – goenning

risposta

31

Prova questa:

List<Item> myItems = new List<Item>(); 
//load myitems 
foreach(Item i in myItems.OrderBy(t=>t.name)) 
{ 
//Whatever 
} 
+3

una domanda un po 'noobish, eseguirà l'ordinamento su ogni iterazione del ciclo causando un colpo di prestazioni? – nikolifish

+2

No, solo la volta –

+3

Per tutti quelli che si chiedono perché questo non funziona: controlla se hai incluso la riga 'using System.Linq;'. – z00l

0

foreach ha bisogno di un IEnumerable<T> LINQ ordine-by prende in una IEnumerable<T> e ti dà un ordinato IEnumerable<T>. Quindi sì, dovrebbe funzionare.

2
new string[] { "d", "c", "b", "a" } 
    .OrderBy(s => s) 
    .ToList() 
    .ForEach(s => MessageBox.Show(s)); 
1

Non è necessario un ciclo. Basta usare LINQ:

List<MyClass> aList = new List<MyClass>(); 

// add data to aList 

aList.OrderBy(x=>x.MyStringProperty); 
Problemi correlati