2

私が抱えている問題は、フィルターが日時の時間部分を受け入れないことです。

明確にするために、

これは機能します。

" AND NextWorkDate <= #" + DateTime.Now.AddDays(1).ToString("dd.M.yyyy") + "#"

これは機能しません。

" AND NextWorkDate <= #" + DateTime.Now.AddDays(1).ToString("dd.M.yyyy H:mm:ss") + "#"

日時の時間の側面を含めようとすると、フィルターが機能せず、行が返されません。

何千もの方法で試してみましたが、なぜそんなに時間がかからないのか本当にわかりません。

フィルターが比較するデータソース列は、dd.M.yyyy H:mm:ss 形式の日時です。

データベース列は、yyyy-mm-dd hh:mm:ss:fff のように、まったく異なる形式になっています。

これは、ラインに沿って何らかの問題を引き起こしている可能性がありますか? フィルターがデータベースではなくデータソースに適用されているためではないと思います。

4

2 に答える 2

1

日付のみではなく、時間で (または DataTable、DataView など)documentationをフィルター処理する方法がありません。BindingSource

ただし、この形式は機能するはずです。

"AND NextWorkDate <= #yyyy-MM-dd HH:mm:ss#"  

このフォーマットは で取得できますDateTime.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture)

string filter = string.Format("...AND NextWorkDate <= #{0}#",
    DateTime.Now.AddDays(1).ToString(
        "yyyy-MM-dd HH:mm:ss", 
        CultureInfo.InvariantCulture));

ただし、より読みやすく、保守しやすく、より強力であるため、Linq をお勧めします。したがって、linq を使用して基になるリストをフィルター処理できます。DataTableuseを使用する場合Linq-To-DataSet、それ以外の場合はLinq-To-SqlorLinq-To-Entitiesを使用してデータソースをクエリするかLinq-To-Objects、メモリ内のリストにすぎない場合。次に、を再割り当てするだけDataSourceです。

于 2013-07-05T07:35:19.617 に答える