Linq Grouping Order By Date, затем Time

Добрый вечер,

Мне удалось получить мой запрос Linq почти правильно. Есть еще одна проблема, которую я пытаюсь решить.

Мой запрос

var o =
 (from c in x
 group c by x.Date.Date into cc
 select new 
 { 
 Group = cc.Key.Date, 
 Items = cc.ToList(),
 ItemCount = cc.Count() 
 }).OrderByDescending(p => p.Group);

Теперь этот запрос работает нормально. Он группирует в ListView по дате. x.Date - это поле DateTime в моей базе данных SQL. Поэтому я выбираю x.Date.Date для группы по фактической дате поля DateTime, как если бы она была просто x.Date, она будет группироваться по дате и времени.

Мой вопрос в том, как мне группировать по времени, так что самое новое время находится в верхней части группы?

Большое спасибо

3 ответа

Измените Items = cc.ToList() на Items = cc.OrderBy(c => c.[field_you_want_to_sort_by]).ToList()


Используйте метод linq "ThenBy()":

var o = (from c in x group c by x.Date.Date into cc select new 
 { 
 Group = cc.Key.Date, 
 Items = cc.OrderByDescending(y=>y.Date).ToList(), 
 ItemCount = cc.Count() 
 })
 .OrderByDescending(p => p.Group)


var o =
 (from c in x
 group c by c.Date.Date into cc
 select new 
 { 
 Group = cc.Key.Date, 
 Items = cc.OrderByDescending(a=>a.Date.Time).ToList(),
 ItemCount = cc.Count() 
 }).OrderByDescending(p => p.Group);

licensed under cc by-sa 3.0 with attribution.