Tri personnalisé logique dans OrderBy à l'aide de LINQ
Quelle serait la bonne façon de trier une liste de chaînes de caractères où je veux les éléments en commençant par un underscore '_', pour être au bas de la liste, sinon tout est alphabétique.
Droit maintenant, je suis en train de faire quelque chose comme cela,
autoList.OrderBy(a => a.StartsWith("_") ? "ZZZZZZ"+a : a )
Vous devez vous connecter pour publier un commentaire.
Si vous voulez personnalisé de la commande, mais ne veulent pas de fournir un comparateur, vous pouvez avoir elle - sql style:
Je pense que vous devez utiliser
OrderBy(Func<>, IComparer<>)
et spécifiez votre propreComparer
à mettre en œuvre votre logique personnalisée .Utilisez la surcharge de OrderBy qui prend un
IComparer
, la premièreFunc
argument va nourrir les comparer, et à partir de là, vous devez comparer les chaînes de caractères. D'abord le cas de l'un ou des deux commence avec_
, puis à partir de là, vous aurez probablement besoin de bande de la_
et il suffit d'utiliser la normestring.Compare
de les trier au-delà de la première_