简单的SQL查询来LINQ

问题描述:

我有以下查询:简单的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

,唯一不同的是,在你的LINQ语句中使用的是m.DateToSend <= dateToSend而不是严格小于你的第一个SQL语句。所以改变这一点,一切都应该是正确的。

试试这个:

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

工作的,如果我改变 Alex 2010-02-16 12:06:51

可能是一个错字,但你的SQL使用<,而你的LINQ的使用< =。除此之外,您的查询看起来应该会产生相同的结果。

在的LINQ问题,你有DateToSend < = @DateToSend(小于或等于),但在SQL查询,你只需要检查<