查询日期范围

Query with date range

我有以下查询;

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() 中解决这个问题?

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' 值的项目。