Lógica de clasificación personalizada en OrderBy using LINQ

¿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); 

Creo que necesitas usar OrderBy(Func<>, IComparer<>) y especificar tu propia Comparer que implementará tu lógica personalizada.

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 _