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 に答える