LINQ заказа и группы

1

Рассмотрим следующий код

var res = from d in CalEntries
    group d by d.date.ToString("MMMM") into grp
    orderby grp.Key 
    select grp;

У меня есть список объектов в CalEntries, где одно свойство-член - date типа DateTime. В настоящее время этот код возвращает мне все даты, сгруппированные по имени месяца, однако порядок групп является алфавитным, так что ноябрь должен появиться до октября, например. Как я могу изменить этот запрос, чтобы сохранить группировку по имени месяца, но упорядочить группы в соответствии с хронологическим порядком месяцев?

  • 0
    Имеет ли значение, если вы разместите свой заказ после вашей группы? MSDN говорит, что Datetime.Month - это число, поэтому его следует правильно упорядочить.
  • 0
    Извините, мой оригинальный код LINQ был неверным. Обновили
Теги:
linq

2 ответа

2

Это действительно назад для группировки по имени месяца, если вы вообще не заботитесь о названии месяца. Вместо этого, группируйте непосредственно по номеру месяца и сортируйте по нему. Не вычисляйте строки, если родной формат ваших данных более подходит.

group x by x.Month into g
orderby g.Key
select new { MonthName = g.Key.ToString("MMMM"), Items = g.ToList() }
  • 0
    Название месяца является значимым. Это отображается в моем XAML. У меня есть ListView, который связан с группой, а ключ используется в качестве заголовка группы. Если есть способ упорядочить по номеру месяца и по-прежнему иметь доступ к названию месяца в XAML, то это звучит как хороший подход
  • 0
    Просто отформатируйте дату как название месяца, как вы делали ранее, но в соответствующем месте. Не во время группировки и заказа. Кажется, у вас уже есть все необходимые знания. Есть конкретные проблемы?
Показать ещё 4 комментария
0

Вы можете попробовать:

orderby d.date.ToString("MM") ascending

Ещё вопросы

Сообщество Overcoder
Наверх
Меню