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 )
Creo que necesitas usar OrderBy(Func<>, IComparer<>)
y especificar tu propia Comparer
que implementará tu lógica personalizada.
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 _