Ho la seguente query LINQ che genera ed eccezione quando FirstOrDefault()
restituisce null. Idealmente vorrei evitare il controllo nulla. C'è un modo per fare questo? Desidero restituire 0
se non ci sono CPOffsets
che soddisfano la chiamata FirstOrDefault()
.LINQ - FirstOrDefault() quindi Select()
double offset = OrderedOffsets.FirstOrDefault(o => o.OffsetDateTime > cpTime).CPOffset;
L'unico modo che posso vedere per raggiungere questo obiettivo è la seguente:
CPOffset cpOffset = OrderedOffsets.FirstOrDefault(o => o.OffsetDateTime > cpTime);
double offset = cpOffset != null ? cpOffset.CPOffset : 0;
C'è un altro modo più succinto? Utilizzare Select()
dopo che lo FirstorDefault()
non viene compilato ma ho pensato che potrebbe essere appropriato qui?
Questo è davvero così succinto come si sta per ottenere ... il più delle volte "abbastanza buono" è abbastanza buono :-) – theMayer
Sono d'accordo. Se lo vuoi _more_ succinto, probabilmente dovrai eseguire il tuo metodo o il tuo metodo di estensione. (che non è necessariamente una cosa negativa) EDIT: Niente di male con 'double offset = DetermineOffset (OrderedOffsets, cpTime);' or 'double offset = OrderedOffsets.DetermineOffset (cpTime)' o 'double offset = OrderedOffsets.DetermineOffset (o = > o.OffsetDateTime> cpTime); 'se vuoi un po 'più di controllo sul predicato. –
Controlla questo: http: //stackoverflow.com/questions/14791514/streamlined-way-to-do-c-sharp-run-time-type-identification-that-avoids-a-null-ch/14791613#14791613 –