2013-05-10 11 views
10

Ho la seguente query LINQ per ottenere un set di dati.Come assegnare una stringa vuota se il valore è nullo nella query linq?

var fields = from row in datarows 
from field in row 
from col in columnnames 
where field.Key == col 
select new { ColumnName = col, FieldValue = field.Value }; 

Il problema è che il mio codice che gestisce i campi dopo la query non riesce a causa di alcune righe field.Value stanno tornando null.

Il mio obiettivo è assegnare una stringa vuota se viene rilevato null.

Qualcosa di simile if field.Value == null, then field.Value = ""

E 'possibile farlo in query LINQ?

risposta

29

Utilizzare il null coalescing operator??:

FieldValue = field.Value ?? "" 
+0

hey @Jon qualsiasi motivo specifico che utilizza "" su stringa.Empty? – PSL

+8

@PSL: 10 caratteri in meno da digitare. – Jon

+0

Lol :) ........ – PSL

6
FieldValue = field.Value ?? String.Empty 
4

Utilizzare il null-coalescing operator

select new { ColumnName = col, FieldValue = field.Value ?? string.Empty }; 

Il ?? l'operatore è chiamato operatore a coalescenza nulla e viene utilizzato per definire un valore predefinito per tipi di valori o tipi di riferimento nullable. Restituisce l'operando di sinistra se l'operando non è nullo; altrimenti restituisce l'operando corretto.

1

Usa ?? all'operatore di tornare stringa vuota in caso di null

var fields = from row in datarows 
from field in row 
from col in columnnames 
where field.Key == col 
select new { ColumnName = col, FieldValue = (field.Value ?? string.Empty) }; 
3

fieldValue = field.Value == null? "": field.Value

+5

... tutte risposte migliori delle mie. –

+3

Ecco un aggiornamento per andare con la tua nuova conoscenza :-) – Jon

0
var fields = from row in datarows 
from field in row 
from col in columnnames 
where field.Key == col 
select new { ColumnName = col, FieldValue = field.Value == null ? string.Empty: field.Value}; 
Problemi correlati