如何在Linq中编写SQL IsNull()?

时间:2012-03-20 16:23:46

标签: .net wpf linq entity-framework linq-to-entities

  

可能重复:
  Equivalent of SQL ISNULL in LINQ?

我最近从ADO.Net迁移到Entity Framework

我在Linq

中执行此查询时遇到问题
select IsNull(MAX(InvoiceNo),0) from Sales

我在LINQ中写了这个查询,除了isNull()

        var q = (from p in dbContext.Sales
                 select p.InvoiceNo).Max();

但我不知道如何在这个Linq中使用IsNull()

当我执行此Linq查询时,我收到此异常。

  

'在类型上调用构造函数   匹配指定的'JIMS.ViewModel.Transaction.SalesViewModel'   绑定约束引发了异常。行号'8'和行   位置'6'。

我正在使用WPF MVVM FrameWork和Entity FrameWork作为DAL

3 个答案:

答案 0 :(得分:9)

var InvoiceNo = dbContext.Sales.Max(x => (int?)x.InvoiceNo) ?? 0;

答案 1 :(得分:3)

试试这个:

var q = (from p in dbContext.Sales
                 select (int?)p.InvoiceNo).Max();

答案 2 :(得分:0)

如果invoicno为null,则必须选择零。你可以这样做的一种方法是:

var elements = (from p in dbContext.Sales
                 where p.InvoiceNo != null
                 select p.InvoiceNo).Max();

假设至少有一个invoiceno,如果没有,你可以做

var elements = (from p in dbContext.Sales
                 select p.InvoiceNo ?? 0).Max();

必须比较所有元素,以便 比第一种方法慢