1

ObjectQuery を受け入れ、さまざまなフィルター パラメーターの値を受け取るかどうかに応じて Where 句を追加するメソッドがあります。メソッドは ObjectQuery を返す必要があります。dateX < dateY など、基本的な日付比較を行うにはどうすればよいですか。

これは私の現在のコードです:

if (myDateFilter != null)
{
    query = query.Where(
        string.Format(
            "it.ExpireDate < cast('{0}' as System.DateTime)",
            myDateFilter));
}

myDateFilter の値が DateTime.Now の場合、このコードは次のようになります。

他のすべてのパラメーターは文字列または整数フィルターであるため、実装は問題ありませんでした。何か案は??

4

1 に答える 1

0

ユーザーがデータを入力した形式を知る必要があります。DateTime.Parse および ParseExact 関数を見てください。

http://msdn.microsoft.com/en-us/library/w2sa9yss.aspx

形式がわかっている場合は、それらを使用して入力文字列を有効な日時に解析できます。いくつかの文化的不変性もあります。

これに対する適切な保護は、DateTimePicker などからの日付を常にフォーマットして、長い形式 ( YYYYMMDD HH:MM:SS ) を使用することです。.Net にそれを行うように指示するフォーマット文字列がありますが、今は思い出せません。

ユーザー入力から文字列を受け入れる場合は、CurrentCulture を考慮する必要があります (上記の同じリンクが役に立ちます)。

于 2009-07-31T21:59:39.890 に答える