2013-07-02 89 views
2

我试图在日期中添加DateDateFinal之间的所有事件以便用事件填充日历。linq选择日期之间的位置

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

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

''Date'和'DateFinal'变量或属性在'allEvents'列表中的某处或两处。 –

+0

它们都在allEvents列表中。 – Snapper

+2

你能澄清一下你的问题吗?很难告诉你想要实现什么,可能会显示'allEvents'中的内容以及你需要脱离的东西。 –

回答

3

首先..很抱歉,如果我有那些​​之间误解了这个问题

如果你有2 DateTime和您要选择的日子的列表(DATETIME) 2日,你可以使用Enumerable.Rangeselect语句中使用DateDateFinal循环之间的天量增加一天的开始日期和输出DateTime是否列表

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

这是你的意思吗?

+0

谢谢sa_ddam213。这是我正在寻找的。我没有得到我想要的结果,但问题应该在某处:[。 +1给你 – Snapper

+1

我添加了一个编辑,以包含'Date'和'DateFinal'到列表中,如果这就是你需要的 –

2

你可能搜索:

TimeSpan span=d2-d1; 
span.TotalDays; 

所以应该样子:

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

这表明一些DateFinal和i.Date之间的所有天

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

+0

我认为这就是它!我会看一看,看看我能否做到这一点! – Snapper

5

使用此:

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

这很好YD1m。我在想这样的事情。但Date和DateFinal都在所有事件列表中。我认为,不能像这样访问他们。 – Snapper