two then several orderbydescending multiple many fields example columns c# linq

then - order by two fields linq c#



¿Cómo usar orderby con 2 campos en linq? (5)

Esta pregunta ya tiene una respuesta aquí:

Digamos que tengo estos valores en una tabla de base de datos

id = 1 StartDate = 1/3/2010 EndDate = 1/3/2010 id = 2 StartDate = 1/3/2010 EndDate = 1/9/2010

Ahora tengo hasta ahora este orden por mi linq

var hold = MyList.OrderBy(x => x.StartDate).ToList();

Quiero pedirlo sin embargo también usando la fecha de finalización.

Al igual que el orden en el que me gustaría esto como

id 2 id 1

Entonces endDates que son mayores van primero. No estoy seguro si necesito cambiar esto para usar alguna función de comparación o algo.


Si tiene dos o más campos para ordenar, intente esto:

var soterdList = initialList.OrderBy(x => x.Priority). ThenBy(x => x.ArrivalDate). ThenBy(x => x.ShipDate);

Puede agregar otros campos con el clasle "ThenBy"


Use ThenByDescending :

var hold = MyList.OrderBy(x => x.StartDate) .ThenByDescending(x => x.EndDate) .ToList();

También puede usar la sintaxis de la consulta y decir:

var hold = (from x in MyList orderby x.StartDate, x.EndDate descending select x).ToList();

ThenByDescending es un método de extensión en IOrderedEnumerable que es lo que devuelve OrderBy . Ver también el método relacionado ThenBy .


VB.NET

MyList.OrderBy(Function(f) f.StartDate).ThenByDescending(Function(f) f.EndDate)

O

From l In MyList Order By l.StartDate Ascending, l.EndDate Descending


MyList.OrderBy(x => x.StartDate).ThenByDescending(x => x.EndDate);


MyList.OrderBy(x => x.StartDate).ThenByDescending(x => x.EndDate);

Tenga en cuenta que también puede utilizar la palabra clave Descending en OrderBy (en caso de que lo necesite). Entonces otra posible respuesta es:

MyList.OrderByDescending(x => x.StartDate).ThenByDescending(x => x.EndDate);