查询日期范围

时间:2015-02-04 20:13:13

标签: asp.net sitecore

我有以下查询;

foreach (Item sourceChild in source.Axes.GetDescendants()
.OrderBy(x => x["date-optional-1"])
.ThenBy(x => x["date-optional-2"])
.Reverse())
{..}

date-optional-1和2,如名称所示,是可选的,因此不保证提交。 但如果是,则1不优先于2。 我需要补充一点,如果没有提交1,那么我只需要今天和前方的项目(这是一个事件日期)。我将如何在Where()?

中进行此操作

1 个答案:

答案 0 :(得分:2)

foreach (Item sourceChild in source.Axes.GetDescendants()
.Where(x => DateUtil.ParseDateTime(x["date-optional-1"], DateTime.MaxValue) >= DateTime.UtcNow.Date)
.OrderBy(x => x["date-optional-1"])
.ThenBy(x => x["date-optional-2"])
.Reverse())
{..}

DateUtil.ParseDateTime转换' date-optional-1'的字符串值。将字段转换为DateTime。

Sitecore以UTC格式存储日期,因此我们将DateTime值与DateTime.UtcNow.Date进行比较。这仅包括带有' date-optional-1'值> =今天在结果集中。

DateTime.MaxValue作为第二个参数传递给DateUtil.ParseDateTime,以便没有' date-optional-1'值包含在结果集中。