Иерархическое меню и LINQ to SQL
Monday, 30 June 08, 18:49 ZЗадача: есть блог; в БД существует таблица Post, в которой есть поле Modified; необходимо вывести в виде дерева все даты (год-месяц-день), которые соответствуют записям в блоге. Например вот так:
- 2008
- 04
- 08
- 05
- 01
- 03
- 03
- 02
- 02
- 01
- 04
У меня получился следующий код:
public class DaysInMonth
{
public int Month
{
get;
set;
}
public List<int> Days
{
get;
set;
}
}
public class MonthesInYear
{
public int Year
{
get;
set;
}
public List<DaysInMonth> Monthes
{
get;
set;
}
}
...
ModelsDataContext db = new ModelsDataContext();
var monthesInYear = db.Posts
.GroupBy(post => post.Modified.Year, post => post.Modified)
.OrderByDescending(group => group.Key)
.Select(postsByYear =>
new MonthesInYear {
Year = postsByYear.Key,
Monthes = postsByYear
.GroupBy(date => date.Month, date => date)
.OrderByDescending(group => group.Key)
.Select(datesInMonth =>
new DaysInMonth {
Month = datesInMonth.Key,
Days = datesInMonth
.Select(date => date.Day)
.Distinct()
.OrderByDescending(day => day)
}
)
}
);