6
votes

Liste .Orderby () ordre de tri basé sur Contient ()?

J'ai une liste standard définie qui contient une courte liste d'éléments. J'aimerais parcourir la liste à l'aide d'un forach () mais souhaiterais «apporter au sommet» ces éléments contenant une valeur de chaîne spécifique afin de les traiter en premier. Est-ce possible avec l'ordonnanceby () et, mieux encore, est-il possible d'une seule ligne? Merci!


0 commentaires

3 Réponses :


5
votes

Oui. Vous pouvez utiliser orderybydescending () code> à l'aide d'une commande qui renvoie un exemple de booléen - Exemple: xxx pré>

Dans ce cas, la commande retournerait code> vrai code> pour "Herbert" et false code> pour toutes les autres valeurs. Tous les valeurs true code> seront commandés après em> tous false code> de valeurs - nous inverrons la commande à l'aide de OrderbyDescendant () CODE> et ont le résultat souhaité. p>

adapté à votre URI code> Liste et contient () code> qui renvoie également un booléen cela signifierait: p>

foreach(var uri in uriList.OrderByDescending(x => x.ToString().Contains(someString))
{
   //..
}


2 commentaires

Juste FYI - Absoluteuri lancera avec certains types d'instances URI. Je ne sais pas ce qui est stocké dans cette liste, mais si vous stockez des informations relatives URI, utilisez Tostring () ou une autre propriété ...


toutes les valeurs vraies seront commandées après toutes les fausses valeurs -> y a-t-il une garantie pour cela? Où est-il écrit? Pouvez-vous aider?



7
votes

Vous pouvez le faire:

foreach(var uri in uriList.OrderByDescending(uri => uri.ToString().Contains("foo"))
{
    // Use uri


0 commentaires

4
votes

Les autres utilisaient les commandes OrderbyDescendant, qui fonctionneront, mais vous avez demandé d'utiliser Orderby, alors ici:

yourList.OrderBy(u => u.AbsoluteUri.Contains("somevalue") ? string.Empty : u.AbsoluteUri);


1 commentaires

Merci d'avoir tenté de rester dans les limites de ma question, mais cela a été formulé dans l'ignorance, mais je suis heureux de le voir peut être fait d'une autre manière.