c# - sql查询如何在Linq中转换

标签 c# .net sql-server linq-to-sql

<分区>

我正在尝试将 SQL 查询转换为 Linq

查询是:

 SELECT Distinct(InvoiceID)
 FROM Invoices
 WHERE ((DATEDIFF(day, InvoiceDate, GETDATE()) > PaymentDays)  AND
 status= 'false') 

我写了下面的代码,但没有得到正确的结果....

var outstanding = db.Invoices.Where(t =>
     (t.InvoiceDate.Value.Subtract(DateTime.Today)).Days > t.PaymentDays.Value 
    && !(bool)t.Status)

在我看来,DATEDIFF 在 LINQ to SQL 中没有适当的等价物

最佳答案

我发现您编写的代码存在一些问题。

  • LinqToSql 不支持DateTime.Subtract,对于这种操作,您需要SqlMethods.DateDiffDay docs .
  • 字符串“false”不能转换为 bool 值,您需要使用 bool.Parse 或像在原始字符串中那样与字符串“false”进行比较。
  • 您的原件会得到一个不同的发票 ID 列表。这在您的 LINQ 尝试中完全缺失。将 .Select(t => t.InvoiceID).Distinct() 附加到您的 LINQ。

关于c# - sql查询如何在Linq中转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7804559/

相关文章:

C# 识别控件上的滚动条

sql - 如何引用第二个 SQL Server

sql - 正确计算 2 个日期范围之间的时间

c# - .NET 开发人员在使用 MYSQL 后端时需要知道的事情

c# - 从代码后面引用 jquery 库

c# - 实体对象的 XML 序列化

c# - .NET Framework - 有什么方法可以让 Dictionary<> 更快一点?

c# - 合并两个(或更多)PDF

C#:Func<> 而不是方法?

SQL Server 2005 - 批量插入失败