linq选择日期之间的位置

时间:2013-07-02 07:09:07

标签: c# linq datetime

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

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

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

这是我目前所做的,但仅显示i.Date的日期,我想展示DateDateFinal之间的所有日子。

提前干杯和谢谢

在我有的allEvents中

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()
                });

3 个答案:

答案 0 :(得分:5)

使用此:

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

答案 1 :(得分:3)

首先..对不起,如果我误解了这个问题

如果您有2个DateTime,并且想要选择这两个日期之间所有天数(作为日期时间)的列表,则可以使用Enumerable.RangeDate之间的天数来DateFinal {1}}循环进入select语句,将一天添加到开始日期并输出日期时间列表

这将选择 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
...

这是你的意思吗?

答案 2 :(得分:2)

您可能正在搜索:

TimeSpan span=d2-d1;
span.TotalDays;

所以它应该看起来像:

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

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

如果这不是您要搜索的内容,请澄清。