2010-02-16 47 views
0

我有以下查詢:簡單的SQL查詢來LINQ

SELECT FROM tblMailToSend 
WHERE (DateToSend < @dateToSend OR DateToSend IS NULL) AND DateSent IS NULL 

@dateToSend傳遞作爲一個PARAM

我試圖將其轉換爲LINQ to SQL的查詢。

我有:

db.MailToSend.Where(m => m.DateToSend == null || m.DateToSend <= dateToSend) 
        .Where(m => m.DateSent == null) 

但是,這是給下面的SQL:

SELECT * 
FROM [dbo].[tblMailToSend] AS [t0] 
WHERE ([t0].[DateSent] IS NULL) AND (([t0].[DateToSend] IS NULL) OR ([t0].[DateToSend] <= @p0)) 

這是給錯誤的結果...

Linq查詢我需要什麼匹配正確的(第一)sql?

+0

可能是愚蠢你只需從<=刪除等號? – 2010-02-16 12:00:15

回答

2

,唯一不同的是,在你的LINQ語句中使用的是m.DateToSend <= dateToSend而不是嚴格小於你的第一個SQL語句。所以改變這一點,一切都應該是正確的。

2

試試這個:

db.MailToSend.Where(m => (m.DateToSend == null || m.DateToSend <= dateToSend) && m.DateSent == null); 
+0

工作的,如果我改變<=至<按照上述答案 – Alex 2010-02-16 12:06:51

1

可能是一個錯字,但你的SQL使用<,而你的LINQ的使用< =。除此之外,您的查詢看起來應該會產生相同的結果。

0

在的LINQ問題,你有DateToSend < = @DateToSend(小於或等於),但在SQL查詢,你只需要檢查<