linq选择日期之间的位置

本文关键字:位置 之间 日期 选择 linq | 更新日期: 2023-09-27 18:20:36

我正试图将DateDateFinal之间的所有事件添加到日期中,以便用事件填充日历。

我已经搜索过了,但找不到任何解决方案。

pageItems.Add("dates", allEvents.Select(i => i.Date).ToList());

这是我到目前为止所拥有的,但只显示i.Date的天数,我想显示DateDateFinal之间的所有天数。

提前干杯和感谢

在所有事件中我有

allEvents = Current.Descendants(n => n.NodeTypeAlias == "EventPage")
            .get_Items()
            .Select(n => new{
            Node = n,
            Date = (Helper.ParseXmlDate(n.GetProperty("itemDate")) ?? n.UpdateDate).DatePart(),
            DateFinal = (Helper.ParseXmlDate(n.GetProperty("itemDateFinal")) ?? n.UpdateDate).DatePart()
                });

linq选择日期之间的位置

使用此:

allEvents.Where(i => i.Date > Date && i.Date < DateFinal).Select(i => i.Date).ToList()

第一。。对不起,如果我误解了的问题

如果您有2个DateTime,并且您想选择这2个日期之间的所有日期的列表(作为DateTime),则可以使用Enumerable.Range(使用DateDateFinal之间的天数)在select语句中循环,将一天添加到开始日期并输出DateTimes 列表

这将选择DateDateFinal之间的所有日期。

  allevents.Select(i => Enumerable.Range(1, (i.DateFinal - i.Date).Days).Select(dayCount => i.Date.AddDays(dayCount))).ToList()

如果需要DateDateFinal包括在列表中,则可以使用

  allevents.Select(i => Enumerable.Range(0, 1 + (i.DateFinal - i.Date).Days).Select(dayCount => i.Date.AddDays(dayCount))).ToList()

输入:

Date: 02/20/2013
DateFinal: 02/31/2013

输出:

02/20/2013
02/21/2013
02/22/2013
02/23/2013
...

你是这个意思吗?

您可能正在搜索:

TimeSpan span=d2-d1;
span.TotalDays;

所以它应该看起来像:

allEvents.Select(i => (DateFinal - i.Date).TotalDays).ToList()

这显示了某些DateFinal和i.Date之间的所有日期

如果这不是你想要的,请澄清。