0

形式が「MM/dd/yyyy」の日付「07/03/2013」の全従業員のレコードが必要だとします。linq での私の式は次のようになります。

_dbContext.EmployeeDetails.Where(Function(f) f.EmpId = _empId And f.Date="07/03/2013")

ここでは、linq が日付形式を「MM/dd/yyyy」として管理する方法を示します。f.Dateまたは " " を MM/dd/yyyy と比較する方法は?

言うなら、私がするなら

_dbContext.EmployeeDetails.Where(Function(f) f.EmpId = _empId And f.Date.ToString("MM/dd/yyyy")="07/03/2013")

それは私を許可しません。私の日付が「07/13/2013」になると仮定すると、一致すると見なしてフォーマットを同期できます"f.Date"が、日付が 12 未満の場合はどうなりますか? 実際、最初の式を使用すると、m は 7 月ではなく 3 月のレコードを取得します。この問題を理解する方法は?

4

2 に答える 2

1

現在のシステムの書式設定オプションに依存する日付/時刻の文字列表現を比較しています。日付リテラル('M/d/yyyy' である必要があります) を使用して、新しいオブジェクトを作成しますDateTime

_dbContext.EmployeeDetails.Where(Function(f) f.EmpId = _empId And f.Date=#3/7/2013#)

変数の場合は、次のように言いますdte

_dbContext.EmployeeDetails.Where(Function(f) f.EmpId = _empId And f.Date=dte)
于 2013-07-04T07:05:17.777 に答える
0

これは次のようになります。

_dbContext.EmployeeDetails.Where
   (Function(f) f.EmpId = _empId And
                f.Date.ToString("dd/MM/yyyy")="07/03/2013")

あなたは最初に通過するMonthので、3月を解析します。順序を変更toStringして、前の日と次の月を渡します。(7月)

于 2013-07-04T07:05:47.750 に答える