Pregunta

Tengo algunas dificultades para ordenar mis resultados por Fecha. ¿Hay algún método especial? Porque estoy haciendo esto ahora:

var db = new DB();
var articles = db.Articles;
var orderedArticles = articles.OrderBy(a => a.Date);
return View(orderedArticles.ToList());

Donde Fecha es un campo de fecha y hora. Y no hay ningún efecto para OrderBy (..) u OrderByDescending(..)

Así que pude comprobar lo que está sucediendo.

Cada vez que agrego un nuevo artículo, solo estoy usando la fecha, no la hora, así que si tengo dos artículos para el mismo día, por ejemplo: con:

var orderedArticles = db.Articles.OrderByDescending(a => a.Date).ToList();

Tendría

Id         Title                           Date
10         First Added  Article            16/09/2009 00:00
11         Second Added Article            16/09/2009 00:00
15         Old Article Added Later         15/09/2009 00:00

Entonces puede ver que se está filtrando por fecha, pero la cuestión es que cuando tengo la misma fecha, la clasificación pierde el foco. Entonces, lo que hice fue ordenar por dos contextos diferentes, como primero ordenar por Id y luego ordenar por Fecha:

var orderedArticles = db.Articles.OrderByDescending(a => a.Id).OrderByDescending(a => a.Date).ToList();

Entonces, después de esto, tengo lo siguiente:

Id         Title                           Date
11         Second Added Article            16/09/2009 00:00
10         First Added  Article            16/09/2009 00:00
15         Old Article Added Later         15/09/2009 00:00

Realmente no sé si esta es la forma correcta de hacerlo porque el problema principal es que cuando envía un campo de fecha como 16/09/2009 establece la hora en 00:00 y esto es un problema en esta situación.

¿Fue útil?

Solución

Este código se ve bien. Debe verificar qué hay realmente en el campo Fecha y asegurarse de no establecer, por ejemplo, solo la Fecha del objeto DateTime en el nivel de la base de datos, ya que todos los objetos DateTime de una fecha determinada apuntan a 00:00:00 por lo tanto, LINQ no sabría cómo ordenarlos.

Otros consejos

Mirando la respuesta que proporcionó (qué FYI debe moverse a la pregunta como una edición), debe aplicar un ThenBy, en lugar de un nuevo OrderBy:

var articles = db.Articles.OrderByDescending(a => a.Date).ThenBy(a => a.Id).ToList();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top