Я пишу класс для меню ASP.NET MVC.Я хочу иметь возможность взять список всех записей блога и создать меню архива, похожее на это:
1/2011 (2)
3/2011 (1)
4/2011 (12)
etc...
Вот код, который я использую:
public class ArchiveMenuModel
{
private List<ArchiveMenuItem> menuItems;
public List<ArchiveMenuItem> MenuItems { get { return menuItems; } }
public ArchiveMenuModel(List<DateTime> dates, string streamUrl)
{
menuItems = new List<ArchiveMenuItem>();
int itemCount = 0;
dates = dates.OrderByDescending(x => x).ToList();
for (int i=0; i<dates.Count; i++)
{
itemCount++;
if(i+1 < dates.Count)
{
if(!(dates[i].Month == dates[i + 1].Month && dates[i].Year == dates[i + 1].Year))
{
menuItems.Add(new ArchiveMenuItem(streamUrl, dates[i].Month, dates[i].Year, itemCount));
itemCount = 0;
}
}
else
{
menuItems.Add(new ArchiveMenuItem(streamUrl, dates[i].Month, dates[i].Year, itemCount));
}
}
}
}
Есть ли лучший способ, возможно, с помощью Linq или что-то?В частности, часть моего кода, которая мне не нравится:
if(!(dates[i].Month == dates[i + 1].Month && dates[i].Year == dates[i + 1].Year))
Если бы я мог избежать такого уродливого оператора if, это было бы здорово!