with orderbydescending orderbyascending ordenar lista c# .net linq sorting sql-order-by

orderbydescending - order by with linq c#



Lógica de clasificación personalizada en OrderBy using LINQ (3)

¿Cuál sería la forma correcta de ordenar una lista de cadenas donde quiero que los elementos que comiencen con un guión bajo ''_'' estén en la parte inferior de la lista, de lo contrario todo será alfabético.

En este momento estoy haciendo algo como esto,

autoList.OrderBy(a => a.StartsWith("_") ? "ZZZZZZ"+a : a )



Si desea realizar pedidos personalizados, pero no desea proporcionar un comparador, puede tenerlo: estilo sql:

autoList .OrderBy(a => a.StartsWith("_") ? 2 : 1 ) .ThenBy(a => a);


Utilice la sobrecarga de OrderBy que toma un IComparer , el primer argumento de Func alimentará al comparador, y desde allí debe comparar las cadenas. El primer trato con el caso de uno o ambos comienza con _ , y luego desde allí probablemente necesite quitar el _ y simplemente usar la string.Compare estándar. string.Compare para ordenarlos más allá del primer _