【问题标题】:Simple SQL query to LINQ对 LINQ 的简单 SQL 查询
【发布时间】:2010-02-16 11:56:06
【问题描述】:

我有以下疑问:

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

@dateToSend 作为参数传入

我正在尝试将其转换为 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?

【问题讨论】:

  • 可能很愚蠢,您只需要从 中删除等号

标签: sql linq linq-to-sql tsql


【解决方案1】:

唯一不同的是,在您的 linq 语句中,您使用的是m.DateToSend &lt;= dateToSend,而不是第一个 sql 语句中的严格小于。所以改变它,一切都应该是正确的。

【讨论】:

    【解决方案2】:

    试试这个:

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

    【讨论】:

      【解决方案3】:

      可能是错字,但您的 SQL 使用

      【讨论】:

        【解决方案4】:

        在 Linq 问题中,您有 DateToSend

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多