我有一个List< Event>事件具有Date属性.我当前将此列表绑定到一个asp:repeater,这很好,并且会产生如下事件标题列表:
事件1
事件2
事件3
事件4
事件5
但是,现在我希望在不同日期发生的事件之间的列表中添加某种分隔符,以使列表看起来像:
2011年5月10日,星期二
事件1
事件2
2011年5月11日,星期三
事件3
2011年5月12日,星期四
事件4
事件5
谁能推荐一个好的方法来做到这一点.我很乐意操纵我的列表服务器端或绑定我的列表,然后使用jQuery在客户端添加分隔符.有什么建议么?
解决方法:
class Event
{
public DateTime EventDate;
public string EventName;
}
List<Event> events = GetEvents();
var grouped = events.GroupBy(e => e.EventDate.Date).OrderBy(g => g.Key);
foreach (var grouping in grouped)
{
Console.WriteLine(grouping.Key); // <-- this is the date
foreach (Event e in grouping) // <-- this is the list of events
{
Console.WriteLine(e.EventName);
}
}
GroupBy返回IEnumerable< IGrouping< TKey,TSource>> ;,因此在这种情况下,您将返回IEnumerable< IGrouping< DateTime,Event>.