Как упорядочить Группу по и Упорядочить результат с помощью Linq - PullRequest
0 голосов
/ 12 июня 2011

У меня есть значения даты и времени (например, 12/01/2010 10: 10: 222 ..) Как можно отобразить только год в порядке убывания? Например, 2011, 2010, 2009, 2008 и т. Д. Мне нужно сгруппировать по годовой части поля и вернуть ее. Мне действительно нужно вернуть год и имя. Мне нужно использовать имя для других функций, поэтому мне нужно 2 значения.

Спасибо за любую помощь ...

Ответы [ 2 ]

2 голосов
/ 12 июня 2011

Не совсем понятно, что вы имеете в виду, но вы могли бы просто захотеть что-то вроде:

var query = collection.GroupBy(record => record.DateProperty.Year)
                      .OrderBy(group => group.Key);

Если это не то, что вам нужно, пожалуйста, предоставьте более подробную информацию - в идеале немногоПример ввода и желаемый результат.

Если вам нужна только одна запись из каждой группы, и вы готовы взять любую произвольную запись, чтобы получить имя, а вам нужен только год, вы можете сделать:

var query = collection.GroupBy(record => record.DateProperty.Year)
                      .Select(g => new { Year = g.Key, Name = g.First().Name })
                      .OrderBy(x => x.Year);
2 голосов
/ 12 июня 2011

Я бы использовал расширения Distinct и OrderByDescending:

var years = IQueryableObject
                 .Distinct(x => x.Year).OrderByDescending(x => x.Year).ToList();
...