0

厳密に型指定されたモデルとビューを作成しようとしています。コードのこの部分は、お問い合わせフォームで送信された「メール」のリストを返すことになっています。

今日送信されたすべてのフォーム送信を返したいです。SQL Server 2008 のデータ型はdatetime. したがってDateTime、モデルにフィールドがあります。

public ActionResult ResultTable()
{
    CombinedReport report = new CombinedReport();

    report.emails = report.db.ContactEmails.Where(w => w.FormInserted.Equals(DateTime.Today)).ToList();
    return PartialView(report);
}

これをローカルの組み込み SQL Server CE 用に構成して実行すると、正常に動作しました。

SQL Server 2008 を実行している実際のデータベース用にセットアップすると、機能しません。

試行錯誤を繰り返し、プログラムの他の部分のコードを調べたところ、C# の実装が日付の一部としてDateTime含ま12:00:00AMれていることに気付きました。SQL との比較を行うと、正確な時刻が送信されます。 .

a を文字列と比較DateTimeできないため、「今日」を文字列としてフォーマットすることさえできません。

ここでインスタンス化する CombinedReport モデルは、特定のページの単なるビュー モデルであり、データベースに直接マップしません ("ContactEmails" はマップします)。

強く型付けされたビューとモデルを維持できるようにする最善の方法は何ですか?

4

2 に答える 2

1

EF を使用している場合は、次のEntityFunctions.TruncateTime方法を使用します。

.Where(w => EntityFunctions.TruncateTime(w.FormInserted).Equals(DateTime.Today))
于 2012-05-15T14:29:04.103 に答える
1

値の日付部分のみを比較したい場合は、それを明示する必要があります。

DateTime today = DateTime.Today;
report.emails = report.db.ContactEmails
                         .Where(w => w.FormInserted.Date == today)
                         .ToList();

使用している LINQ のフレーバーがDateプロパティをサポートしているかどうかは別の問題ですが、それが私が始めようとしているものです。

于 2012-05-15T13:56:20.177 に答える