LINQ的简单SQL查询

时间:2010-02-16 11:56:06

标签: sql linq linq-to-sql tsql

我有以下查询:

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

@dateToSend作为参数传递

我正在尝试将此转换为linq to sql query。

我有:

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?

4 个答案:

答案 0 :(得分:2)

试试这个:

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

答案 1 :(得分:2)

唯一不同的是,你的linq语句中使用的是m.DateToSend <= dateToSend而不是第一个sql语句中的strict。所以改变这一点,一切都应该是正确的。

答案 2 :(得分:1)

可能是一个错字,但你的SQL正在使用&lt;而你的Linq正在使用&lt; =。除此之外,您的查询看起来应该产生相同的结果。

答案 3 :(得分:0)

在Linq问题中,您有DateToSend&lt; = @DateToSend(更少或相等),但在SQL查询中,您只需检查&lt;