11
votes

Existe-t-il une façon d'utiliser Orderby dans A pour la boucle C #?

J'ai une boucle pour la boucle où je veux commander le nom alphabétiquement xxx

regarder comment faire cela, je me demandais même si je pouvais utiliser Linq Orderby à l'intérieur de la Forloop? < / p>


2 commentaires

Qu'essayez-vous d'accomplir exactement?


Une boucle de cela? Une boucle de cordes? Vous voulez commander ces chaînes par nom? Si oui, faites juste votrelist.orderby (); Sinon, donnez-nous plus d'informations. Le code est le bienvenu aussi.


4 Réponses :


35
votes

Essayez ceci:

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


3 commentaires

Une question légèrement noobaine, l'Orderby exécutera-t-il sur chaque itération de la boucle, provoquant ainsi une performance frappée?


Non, juste la seule fois


Pour tous ceux qui se demandent pourquoi cela ne fonctionne pas: Vérifiez si vous avez inclus le à l'aide de System.Linq; ligne.



0
votes

foreach nécessite un iEnumerable linq ordre-by prend en un iEnumerable et vous donne un type IEnumerable . Donc oui, cela devrait fonctionner.


0 commentaires

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

0 commentaires

1
votes

Vous n'avez pas besoin d'une boucle du tout. Utilisez simplement LINQ:

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

// add data to aList

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


0 commentaires