2013-07-04 43 views
0

假設我想記錄日期「07/03/2013」​​的所有員工,格式爲「MM/dd/yyyy」。 我在LINQ表達式是:如何在vb.net中檢查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") 

它不允許我。假設我的日期將是「2013年7月13日」,那麼我們可以認爲它匹配並與"f.Date"同步格式,但約會的日期不到12?事實上,通過使用第一個表達式,m得到3月份的記錄,而不是7月。 如何找出這個問題?

+0

你是否正在用LINQ to SQL來做這件事?或LINQ到EF?無論哪種情況,'linq'標籤都是不相關的。 –

回答

1

您正在比較日期/時間的字符串表示形式,這取決於當前系統的格式選項。使用date literal(必須是 '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) 
+0

但說我的3/7/2013是在變量那麼我應該如何使用文字?它將再次在格式上不匹配。對 ? –

+0

@RedSwan看到我的編輯 –

+0

謝謝,但我仍然認爲linq檢查自己的格式。編輯不起作用。任何其他想法? –

0

它應該是這樣的:

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

你在哪裏通過Month首先,所以它解析3月。更改toString訂單,以便您通過前幾天然後再通過月份。 (July)

+0

好吧,Linq不允許使用f.Date.ToString(「dd/MM/yyyy」)。所以不能使用這個 –