Non è consentito avere un operatore condizionale in un'espressione lambda in ForEach?Utilizzo dell'operatore condizionale nell'espressione lambda in ForEach() in un elenco generico?
List<string> items = new List<string>{"Item 1", "Item 2", "Item I Care About"};
string whatICareAbout = "";
// doesn't compile :(
items.ForEach(item => item.Contains("I Care About") ?
whatICareAbout += item + "," : whatICareAbout += "");
errore di compilazione -> "Assegnazione Solo, chiamata, incremento, decremento, e nuove espressioni oggetto può essere usato come una dichiarazione"
Cercando di utilizzare un normale se non funziona neanche:
// :(
items.ForEach(item => if (item.Contains("I Care About")) {whatICareAbout += item + ", ";}
Non è possibile?
Sheesh Sono eccezionalmente impressionato dalle risposte, il tutto in pochi minuti dal chiedere :) Penso che @SLaks risponda all'intento della mia domanda, ma Aggregate() mi fa impazzire! :) Grazie ancora a tutti :) – Jamezor
Hai avuto un'espressione di stringa come un tipo di operatore condizionale e avevi bisogno di una dichiarazione per il tuo metodo .ForEach(). Ecco perché l'errore di compilazione era lì. –
@Roman - Ho capito ora! Penso a? x: y come short-hand per if (a) {x} else {y} ma? restituisce il valore di xey, che in questo caso era una stringa ... – Jamezor