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!