在C#或使用jQuery中按日期属性拆分列表

我有一个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在客户端添加分隔符.有什么建议么?

解决方法:

您可以使用LinqGroupBy按日期服务器分组

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>&gt ;,因此在这种情况下,您将返回IEnumerable< IGrouping< DateTime,Event>.

上一篇:ASP.NET(七)---Repeater控件使用方法


下一篇:在C#中动态创建绑定到对象列表的ASP.NET中继器