Quote Originariamente inviata da Kahm Visualizza il messaggio
vorrei semplificarlo scrivendo una sola IF
in pratica deve prendere un valore da una data nullable.
prima controlla se ci sono record, poi se il numero è >0 e poi se non è null il dato
consigli?
Innanzitutto, puoi eliminare in sicurezza la prima condizione if (L != null) che non serve assolutamente a nulla, in quanto il valore sarà sempre diverso da null.

In secondo luogo, osservando la presenza di db.DREAM_Log.AsNoTracking(), immagino che si tratti di una espressione LINQ applicata ad Entity Framework, quindi occhio perché quando esegui prima Count() e poi First(), in realtà stai eseguendo la query due volte (inutilmente), la prima per calcolare il conteggio e la seconda per recuperare di nuovo i record prendendo il primo.

Puoi sintetizzare il tutto con una istruzione sola che vada a recuperarti direttamente il valore che stai cercando dall'eventuale unico record - se esiste - che soddisfa la tua condizione dopo aver applicato l'ordinamento; in breve qualcosa del genere:

codice:
var usrDateMod = db.DREAM_Log.AsNoTracking()
	.OrderByDescending(ee => ee.Usr_DateMod)
	.Where(ee => ee.IdRecord == Esame.IDEsame)
	.Select(ee => ee.Usr_DateMod)
	.FirstOrDefault();

var lastUpdate = usrDateMod != null ? usrDateMod.Value.ToShortDateString() : string.Empty;
Ovviamente non ho verificato se il codice compila ed è corretto sintatticamente perché non ho a disposizione i tipi con cui stai effettivamente lavorando, ma dovrebbe rendere l'idea.

Ciao!