LINQ To SQL ed un problema di null

di Stefano Mostarda

L'altro giorno mi stavo dilettando scrivendo una query LINQ per estrarre il prossimo numero di fattura per l'anno in corso. La query è tutto sommato semplice:

(from c in MyDataContext.Invoice
where c.IssueDate.Year == DateTime.Now.Year
select c.Number).Max()

Ora il problema scatta per la prima fattura dell'anno. Infatti, il risultato della query da db è null poichè non esiste ancora una fattura per l'anno in corso. La conseguenza è che LINQ cerca di mettere null in un int (poichè il campo Number è int) ed il tutto scoppia. La soluzione è semplice, basta castare il campo Number a nullable ed usare GetValueOrDefault per avere il valore di default che desideriamo in caso di null.

(from c in MyDataContext.Invoice
where c.IssueDate.Year == DateTime.Now.Year
select (int?)c.Number).Max().GetValueOrDefault(1)

Stay tuned...

Commenti
Licantrop0 scrive:
20/10/2008 ore 15.39
nostromo scrive:
LINQ To SQL ed un problema di null

io mi son trovato bene usando l'operatore ?? illuminato da scott

http://weblogs.asp.net/scottgu/archive/2007/09/20/the-new-c-null-coalescing-operator-and-using-it-with-linq.aspx

ciao marco
17/12/2007 ore 9.16

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

Nella stessa categoria
I più letti del mese
TagCloud
BLOG INFO
  • 130 post, 93 commenti, 20 trackback
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom
IN EVIDENZA