0

请看下面的代码:

var pcPageList = db.PcPages
        .Where(m => 
            m.Quarter == exactQuarter && 
            m.Url == pageUrl && 
            m.UpdatedOn.ToDateTime().Date.ToString("dd/MMM").ToLower() == "02/nov")
        .OrderBy(m => m.UpdatedOn)
        .FirstOrDefault();

当我在上面运行时,应用程序抛出错误说:“ToDateTime”尚未实现。任何人都可以建议吗?

4

3 回答 3

2

怎么样:

var updateStart = DateTime.ParseExact("02/nov", "dd/MMM", CultureInfo.InvariantCulture);
var updateEnd = updateStart.AddDays(1.0);
var pcPageList = db.PcPages
    .Where(m => 
        m.Quarter == exactQuarter && 
        m.Url == pageUrl && 
        m.UpdatedOn >= updateStart &&
        m.UpdatedOn < updateEnd)
    .OrderBy(m => m.UpdatedOn)
    .FirstOrDefault();
于 2012-11-05T14:50:58.103 回答
1

我认为,您应该ToDateTime使用Convert类调用:

  Convert.ToDateTime(m.UpdatedOn).Date...

并将中间删除Date为:

  Convert.ToDateTime(m.UpdatedOn).ToString("dd/MMM").ToLower() == "02/nov"
于 2012-11-05T14:48:50.580 回答
0

与其进行字符串比较,不如直接比较日期组件更有效。我没有对此进行测试,但类似以下内容可能会起作用:

var pcPageList = db.PcPages
      .Where(m => m.Quarter == exactQuarter && m.Url == pageUrl)
      // You may need to materialize the results of the query at this point
      //   or use Convert.ToDateTime(...) instead of ToDateTime()
      .Select(m => new { Row = m, UpdatedOn = m.UpdatedOn.ToDateTime() })
      .Where(a => a.UpdatedOn.Month == 11 && a.UpdatedOn.Day == 2)
      .Select(a => a.Row)
      .OrderBy(m => m.UpdatedOn)
      .FirstOrDefault();
于 2012-11-05T15:16:44.890 回答