我有一个List<Event>,Event有一个Date属性。我目前正在将这个列表绑定到一个asp:repeater,这个列表很好,并生成了如下所示的事件标题列表:
活动1
活动2
活动3
活动4
活动5
但是,现在我希望在不同日子发生的事件列表中添加某种分隔符,以便使我的列表看起来如下:
,2011年5月10日,星期二,
活动1
活动2
二00一年五月十一日(星期三)
活动3
2011年5月12日(星期四)
活动4
活动5
有人能推荐一种很好的方法吗。我很乐意操纵我的列表服务器端或者绑定我的列表,然后用jQuery添加分隔符客户端。有什么建议吗?
发布于 2011-05-10 13:52:07
您可以使用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>>
发布于 2011-05-10 13:40:42
或者您可以使用嵌套的中继器-在这种情况下,您将需要其中两个-。
父中继器呈现日期,并嵌套父项的日期。
这一切都是关于用与当前不同的方式设置中继器的数据源,并使用Repeater.ItemDataBound事件。
发布于 2011-05-10 13:43:42
您可以按日对事件进行分组,并将该键用作中继器的标题。
https://stackoverflow.com/questions/5950909
复制相似问题