PDA

View Full Version : [c#] Problema linq selezione Attributi che possono essere null


3nigma666
16-06-2011, 17:22
Ho questo linq

var IndirizziClienti = (from C in mioDatabase.Clienti
join IC in mioDatabase.IndirizziClienti on C.ID equals IC.IDClienti
join I in mioDatabase.Indirizzi on IC.IDIndirizzi equals I.ID
select new { C.Nome, I.Indirizzo, I.Civico, I.Citta, I.CAP, C.Telefono, C.Referente}).ToList();


Alcuni C.Telefono sono null e quando inserisco i dati alcuni DEVO PER FORZA DI COSA lasciarli null.

Telefono è string

Voglio nel select se TELEFONO è null, mi venga restituito una stringa vuota "".

Come fare?

giangian2
17-06-2011, 06:59
ciao,
non l'ho provato e non so se funziona su una query LINQ ma puoi provare cosi:

var IndirizziClienti = (from C in mioDatabase.Clienti
join IC in mioDatabase.IndirizziClienti on C.ID equals IC.IDClienti
join I in mioDatabase.Indirizzi on IC.IDIndirizzi equals I.ID
select new { C.Nome, I.Indirizzo, I.Civico, I.Citta, I.CAP, C.Telefono == null ? String.Empty : C.Telefono, C.Referente}).ToList();

gugoXX
17-06-2011, 17:53
Giusto.
e per essere piu' raffinati, consiglio l'operatore ?? (questo sconosciuto)

C.Telefono == null ? String.Empty : C.Telefono
equivale a
C.Telefono ?? string.Empty
ovvero restituisce il termine sinistro. Ma se il sinistro e' null, allora restituisce il destro.

banryu79
20-06-2011, 08:15
Giusto.
e per essere piu' raffinati, consiglio l'operatore ?? (questo sconosciuto)

Noo... in C# c'è sta roba? figata!
Quante volte mi è capitato di desiderare un operatore del genere :sbav:

Kralizek
20-06-2011, 08:48
Noo... in C# c'è sta roba? figata!
Quante volte mi è capitato di desiderare un operatore del genere :sbav:

fosse solo questo, go back to your java :sofico:

banryu79
20-06-2011, 09:06
fosse solo questo, go back to your java :sofico:
Beh, Java non è solo Java (come .NET non è solo C#) e quando uso Scala ho le Option, che sono ancora più eleganti e potenti... statte buono :D
E' che ho usato un sacco l'operatore ternario (brutto, brutto, brutto :D) e quell'operatore ?? è stata una sorpresa (molte volte ne ho sentito la neccessità), tutto qui.

Kralizek
20-06-2011, 09:51
Beh, Java non è solo Java (come .NET non è solo C#) e quando uso Scala ho le Option, che sono ancora più eleganti e potenti... statte buono :D
E' che ho usato un sacco l'operatore ternario (brutto, brutto, brutto :D) e quell'operatore ?? è stata una sorpresa (molte volte ne ho sentito la neccessità), tutto qui.

tranquillo che si scherzava ;)

e per rendere questo post un po' piú utile...

http://msdn.microsoft.com/en-us/library/ms173224.aspx

banryu79
20-06-2011, 10:02
tranquillo che si scherzava ;)

Chiaro, ma come potevo non risponderti? :D

shinya
20-06-2011, 10:14
E' che ho usato un sacco l'operatore ternario (brutto, brutto, brutto :D) e quell'operatore ?? è stata una sorpresa (molte volte ne ho sentito la neccessità), tutto qui.

Ma non basta farti una funzione? Tipo la nvl in oracle... :confused:
ps. che ti ha fatto di male l'operatore ternario?

banryu79
20-06-2011, 11:10
Ma non basta farti una funzione? Tipo la nvl in oracle... :confused:
ps. che ti ha fatto di male l'operatore ternario?
Ma te chi sei? :D
Il mio analista? :asd:
edit: l'operatore ternario non mi ha fatto niente (a me piace), solo che ha una cattiva reputazione (non ricordo dove ho letto tutti i "misusing" a cui si presta)

Kralizek
20-06-2011, 12:35
Ma te chi sei? :D
Il mio analista? :asd:
edit: l'operatore ternario non mi ha fatto niente (a me piace), solo che ha una cattiva reputazione (non ricordo dove ho letto tutti i "misusing" a cui si presta)

io ci ho fatto le peggio porcate nelle linq queries!

shinya
20-06-2011, 13:31
Ma te chi sei? :D
Il mio analista? :asd:
Beh, se continui ad usare java di tua spontanea volontà nel 2011, probabilmente è dovuto a qualche conflitto infantile irrisolto :friend:

banryu79
20-06-2011, 15:03
Beh, se continui ad usare java di tua spontanea volontà nel 2011, probabilmente è dovuto a qualche conflitto infantile irrisolto :friend:
Mi salvo un pochino se ti dico che sto imparando ad aprezzare anche Scala (anche se sono agli inizi)?

devbeginner
20-06-2011, 18:04
ma usi le join nelle tue query perché si tratta di LINQ2SQL? :confused:

3nigma666
22-06-2011, 21:03
ragazzi non ho parole siete mitici!!! GRAZIE MILLE!!!!!!!