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...
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Entity Framework ed il mapping, il 15 luglio 2008 alle 00:34
- Il nuovo speciale in arrivo su LINQ, il 28 marzo 2008 alle 11:37
- LINQ To SQL ed il Fetching, il 27 dicembre 2007 alle 10:23
- LINQ To SQL vs NHibernate, il 25 novembre 2007 alle 16:53
- Linq non è solo interazione con il Database, il 14 ottobre 2007 alle 23:54