Bedingte operator im lambda-Ausdruck in der ForEach() auf eine generische Liste?

Ist es nicht erlaubt, eine bedingte operator in einem lambda-Ausdruck in der ForEach?

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 += "");

Kompilierungs-Fehler -> "Nur Belegung, call -, increment -, decrement, und neue Objekt-Ausdrücke können verwendet werden, wie eine Aussage"

Versucht, einen normalen, wenn nicht entweder Arbeit:

//:(
items.ForEach(item => if (item.Contains("I Care About")) {whatICareAbout += item + ", ";}

Einfach nicht möglich?

  • Sheesh ich bin außerordentlich beeindruckt von den Antworten, die alle innerhalb von Minuten zu Fragen 🙂 ich denke, @SLaks Antworten die Absicht meiner Frage, aber Summe() blows my mind! 🙂 Nochmal danke an alle 🙂
  • Sie hatte einen string-Ausdruck, der als eine Art bedingte operator, und Sie brauchte eine Erklärung für Ihr .ForEach () - Methode. Das ist, warum Kompilierungs-Fehler war da.
  • Ich bekomme es jetzt! Ich denke, der eine ? x: y als kurzer hand für, wenn (a) {x} else {y} aber ? gibt den Wert von x und y, welche aus einem string, in diesem Fall...
InformationsquelleAutor Jamezor | 2009-11-29
Schreibe einen Kommentar