我有一个 List<Event>
和一个 Event
有一个 Date
属性(property)。我目前正在将此列表绑定(bind)到 asp:repeater
这很好,并会生成如下事件标题列表:
事件1
事件二
事件三
事件四
事件5
但是,现在我希望在不同日期发生的事件之间的列表中添加某种分隔符,以便我的列表如下所示:
2011 年 5 月 10 日,星期二
事件一
事件二
2011 年 5 月 11 日,星期三
事件三
2011 年 5 月 12 日,星期四
事件四
事件5
谁能推荐一个好的方法来做到这一点。我很乐意在服务器端操作我的列表或绑定(bind)我的列表,然后使用 jQuery 在客户端添加分隔符。有什么建议吗?
最佳答案
您可以使用 Linq 的 GroupBy 按日期服务器端分组
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>>
关于c# - 按 C# 中的日期属性或使用 jQuery 拆分列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5950909/