【问题标题】:LINQ group by and compare dateLINQ 分组和比较日期
【发布时间】:2011-06-16 12:09:46
【问题描述】:

我有以下几点:

    var currentDate = DateTime.UtcNow;
    var calendarEntry = from item in new CalendarEntryRepository(this.Db).List().Where(x => x.Culture == language.Value)
                  group item by item.ContentObjectId into g
                  let itemMaxDate = g.Where(i => i.StartDate > currentDate).Select(i => i.StartDate).DefaultIfEmpty()
                  let city = g.Select(i => i.City).FirstOrDefault()
                  select new 
                  {
                      ContentObjectId = g.Key,
                      StartDate = itemMaxDate,
                      City = city ?? string.Empty
                  };

从 CalendarEntryRepository 我想按 ContentObjectId 分组(这很好用)。但是,当我添加这一行时:

let itemMaxDate = g.Where(i => i.StartDate > currentDate).Select(i => i.StartDate).DefaultIfEmpty()

我不断收到此错误:

Message = "The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value."

我要做的是按 ContentObjectId 分组,然后得到比今天更大的 StartDate。

我正在使用实体框架和 MS SQL2008 谢谢

【问题讨论】:

  • DateTime.Now 是否给你一个小于 1/1/1753 的日期?

标签: asp.net asp.net-mvc linq


【解决方案1】:

将 DataBase 中的 StartDate 列更改为数据类型 DateTime2 以支持更广泛的日期范围

【讨论】:

    【解决方案2】:

    您数据库中 DateTime 的最小值比您在应用中使用的文化中定义的 MinValue 的值低。

    【讨论】:

    猜你喜欢
    • 2012-02-07
    • 2021-05-01
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多