LINQ To SQL ed un problema di null

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...

Nella stessa categoria

Commenti
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.

© 1998-2008 - SMWorld.NET - Il blog di Stefano Mostarda

TagCloud
BLOG INFO
  • Post: 124
  • Commenti: 74
  • TrackBacks: 19
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom OPML

MVP
CATEGORIE
I PIÙ LETTI DEL MESE
IN EVIDENZA