2010-10-26 31 views
7

Tengo un bucle donde quiero orderBy el nombre en orden alfabético¿Hay alguna manera de usar orderby en un forloop C#?

a 
b 
c 
d 

buscando la manera de hacer esto, se preguntó siquiera si podía usar LINQ OrdenarPor dentro del forloop?

+1

¿Qué está tratando de lograr exactamente? – R0MANARMY

+0

¿Un bucle de eso? ¿Un bucle de cuerdas? ¿Desea ordenar estas cadenas por su nombre? Si es así, simplemente haz yourList.OrderBy(); Si no, danos más información. El código es bienvenido también – goenning

Respuesta

31

Prueba esto:

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

una pregunta levemente noobish, ¿se ejecutará el orden en cada iteración del bucle causando así un golpe de rendimiento? – nikolifish

+2

No, solo la única vez –

+3

Para cualquiera que se pregunte por qué esto no funciona: Compruebe si ha incluido la línea 'using System.Linq;'. – z00l

0

foreach necesita una IEnumerable<T> LINQ orden por llevaremos con IEnumerable<T> y le da una ordenados IEnumerable<T>. Entonces sí, debería funcionar.

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

No necesita un lazo en absoluto. Simplemente use LINQ:

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

// add data to aList 

aList.OrderBy(x=>x.MyStringProperty); 
Cuestiones relacionadas