如何使用LINQ检查所有日期是否来自同一个月

时间:2014-01-23 13:25:17

标签: c# linq

我在一个对象中提交了一个日期。我想检查所有日期是否来自同一个月[月份可以是任何东西]。

以下是检查即将到来的日期的示例是从当月。

@Model.Events.Where(d => 
   System.Convert.ToDateTime(d.Eventdate).Month == System.Convert.ToInt32(month))

3 个答案:

答案 0 :(得分:6)

使用Enumerable.All() - 它会验证序列中的所有项是否满足条件:

@Model.Events.All(d => 
   Convert.ToDateTime(d.Eventdate).Month == Convert.ToInt32(month))

答案 1 :(得分:2)

你可以使用类似的东西:

bool allSameMonth = @Model.Events
                          .Select(x => x.EventDate.Month)
                          .Distinct()
                          .Count() < 2;

(我冒昧地假设您要将Eventdate模型属性从string属性更改为DateTime属性,并将{{1}大写你真的不希望在整个地方使用字符串。尽可能早地转换为D,然后只在你需要的地方转换回字符串。)< / p>

此代码并不关心它是哪个月 - 只是少于2个不同的月份。 (这意味着“没有事件”也很重要。你需要考虑如何处理它。)

答案 2 :(得分:0)

@Model.Events.Where(d => 
   d.Eventdate.Month == DateTime.Now.Month)