2012-03-20 2 views
2

Можно создать дубликат:
Equivalent of SQL ISNULL in LINQ?Как написать SQL IsNull() в 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(); 

Но я не знаю, как использовать IsNull() в этом Linq

Когда я выполнить этот запрос Linq я получаю это исключение.

'Вызов конструктора по типу „JIMS.ViewModel.Transaction.SalesViewModel“, который совпадает с указанным связывающие ограничения бросили исключение. Номер строки «8» и строка позиция «6».

Я использую WPF MVVM FrameWork с Entity Framework, как DAL

+1

Почему downvotes? – Kyberias

+0

Kyberias все свое собственное желание. вы можете голосовать, если вы действительно обеспокоены. в любом случае спасибо –

+0

извините, я не видел u r vote. но спасибо. –

ответ

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

Является ли это также методом Linq или Anonymous –

+0

Его выражение lambda linq – Magnus

+0

или выражение Lambda –

3

Попробуйте это:

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

Вам придется selectzero если invoicno равна нулю. Один из способов, вы могли бы сделать это было бы:

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(); 

, которые должны будут сравнивать все элементы так мог быть медленнее, чем первый подход

Смежные вопросы