我現在徹底沮喪。我遇到了LINQ-To-SQL的問題。大約80%的時間,它工作的很好,我喜歡它。另外20%的時間,L2S創建的查詢返回正確的數據,但實際從代碼運行時,它不會返回任何內容。我即將把我的頭髮拉出來。我希望有人能看到一個問題或以前聽說過這個。谷歌搜索沒有什麼回報。C# - Linq-To-SQL - 查詢問題
這裏是LINQ查詢...
var query = from e in DataLayerGlobals.GetInstance().db.MILLERTIMECARDs
where e.deleted_by == -1
&& e.LNAME == lastName
&& e.FNAME == firstName
&& e.TIMECARDDATE == startDate.ToString("MM/dd/yyyy")
group e by e.LNAME into g
select new EmployeeHours
{
ContractHours = g.Sum(e => e.HRSCONTRACT),
MillerHours = g.Sum(e => e.HRSSHOWRAIN + e.HRSOTHER),
TravelHours = g.Sum(e => e.HRSTRAVEL)
};
這是生成的查詢....
SELECT SUM([t0].[HRSCONTRACT]) AS [ContractHours],
SUM([t0].[HRSSHOWRAIN] + [t0].[HRSOTHER]) AS [MillerHours],
SUM([t0].[HRSTRAVEL]) AS [TravelHours]
FROM [dbo].[MILLERTIMECARD] AS [t0]
WHERE ([t0].[deleted_by] = @p0)
AND ([t0].[LNAME] = @p1)
AND ([t0].[FNAME] = @p2)
AND ([t0].[TIMECARDDATE] = @p3)
GROUP BY [t0].[LNAME]
現在,當我插上了完全相同的值的LINQ查詢使用進入生成的查詢,我得到正確的數據。當我讓代碼運行時,我什麼也得不到。
任何想法?
TIMECARDDATE是一個字符串。是的,是的,我知道。我繼承了這個數據庫,並且改變它不是一個選項。 這可能是問題。它在日期爲2009年10月19日時有效,但在日期爲2009年5月10日時不起作用。這是SQL Server問題還是LINQ問題? – 2009-12-02 03:12:28
@ Eclipsed4utoo你對10/5/2009的失敗以及db日期只是字符串的事實的評論讓我認爲你的格式字符串應該是「MM/d/yyyy」,而不是你的「10/5/2009 「而不是」10/05/2009「作爲你當前的代碼。 – imaginaryboy 2009-12-02 03:31:49
老兄......你太棒了。就是這樣。我結束了使用「M/D/YYYY」,所以月份不會有領先的0,這似乎也導致了這個問題。 – 2009-12-02 03:49:23