Sitecore foreach 但按日期字段排序子项
Sitecore foreach but order children by date field
我目前有网络表单根据 Sitecore 中的自然顺序迭代和输出 Sitecore 项目。
规范现在更改为需要针对每个项目的日期字段,现在将按最旧的顺序确定排序顺序 - 最简单的迭代方法是什么,但首先按每个项目中的日期字段对列表进行排序?
字段名称是 EVENTDATE
页面目前很高兴使用:
Sitecore.Collections.ChildList eventItems;
eventItems = eventRange.GetChildren();
foreach (Item eventItem in eventItems) {
timelineHolder.InnerHtml += "<h3>" + eventItem.Fields["Title"] + "</h3>";
}
感谢您的帮助
只需在您的 foreach 循环中添加 .OrderBy(ei => ei["EVENTDATE"])
:
Sitecore.Collections.ChildList eventItems;
eventItems = eventRange.GetChildren();
foreach (Item eventItem in eventItems.OrderBy(ei => ei["EVENTDATE"]))
{
timelineHolder.InnerHtml += "<h3>" + eventItem.Fields["Title"] + "</h3>";
}
日期在 Sitecore 中存储为字符串(在 Sitecore 8 中是 20171012T000000Z
,在 Sitecore 6 中是更短的格式)。按字母顺序排序实际上是按日期排序。
我目前有网络表单根据 Sitecore 中的自然顺序迭代和输出 Sitecore 项目。
规范现在更改为需要针对每个项目的日期字段,现在将按最旧的顺序确定排序顺序 - 最简单的迭代方法是什么,但首先按每个项目中的日期字段对列表进行排序?
字段名称是 EVENTDATE
页面目前很高兴使用:
Sitecore.Collections.ChildList eventItems;
eventItems = eventRange.GetChildren();
foreach (Item eventItem in eventItems) {
timelineHolder.InnerHtml += "<h3>" + eventItem.Fields["Title"] + "</h3>";
}
感谢您的帮助
只需在您的 foreach 循环中添加 .OrderBy(ei => ei["EVENTDATE"])
:
Sitecore.Collections.ChildList eventItems;
eventItems = eventRange.GetChildren();
foreach (Item eventItem in eventItems.OrderBy(ei => ei["EVENTDATE"]))
{
timelineHolder.InnerHtml += "<h3>" + eventItem.Fields["Title"] + "</h3>";
}
日期在 Sitecore 中存储为字符串(在 Sitecore 8 中是 20171012T000000Z
,在 Sitecore 6 中是更短的格式)。按字母顺序排序实际上是按日期排序。