vbdotnet.it

Tricks & tips, workaround, forum and ideas with .Net

About the author

Enrico Rossini è il gestore di questo blog.
E-mail me Send mail

Recent posts

Recent comments

Contributi

Best 6 ~ 6 users ~ 6 comments

Info legali

Le opinioni espresse in questo blog sono strettamente personali e ogni persona è responsabile dei commenti che inserisce. I marchi citati sono delle rispettive aziende.

© Copyright 2010

Advertising


Funzione Max con condizione in Linq

Vi faccio un caso reale. Pensate di avere una tabella delle fatture con i campi Numero (per il progressivo della fattura) in formato int, Data di emissione in formate datetime e tipologia di documento in formato int (fattura, proforma, ddt, ecc). Ammettiamo che vi interessi conoscere il massimo valore presente nel campo Numero tenendo conto dell'anno (partendo dalla data corrente) e della tipologia di documento. Come fare senza incorrere in errori strani? Ecco la semplice soluzione (eDoc è il LinqToSQL, DataDocumento e TipoDocumento sono due variabili di servizio)

   1:  max = Aggregate p In eDoc.Fatture Where p.Data.Value.Year = Year(DataDocumento) And _
   2:        p.TipoDocumento.Value = TipoDocumento Into m = Max(p.Numero)

Interessante secondo me il modo in cui si confronta l'anno da database con l'anno da variabile: infatti se provi ad utilizzare Year(p.Data) comincia a dare errori impossibili del tipo "Non sono supportate conversioni a SQL per il metodo 'Int32 Year(System.DateTime)" che poi non riesci neanche a trovare qualcuno in internet che abbia avuto il tuo stesso problema!

Per evitare di avere errori nel caso in cui non ci siamo record che soddisfano la condizione, ti consiglio di mettere un bel Try...Catch!

Currently rated 1.0 by 1 people

  • Currently 1/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by enrico on Tuesday, August 05, 2008 9:44 PM
Permalink | Comments (0) | Post RSSRSS comment feed