LINQ分组和比较日期

时间:2011-01-27 11:59:59

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

我有以下内容:

    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 感谢

2 个答案:

答案 0 :(得分:1)

数据库中DateTime的最小值具有较低的值,MinValue定义为您在应用程序中使用的文化。

答案 1 :(得分:1)

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