¿No está permitido tener un operador condicional en una expresión lambda en ForEach?¿Usando el operador condicional en la expresión lambda en ForEach() en una lista genérica?
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 += "");
Error de compilación -> "Sólo asignación, llamar, incremento, decremento, y nuevas expresiones de objetos se puede utilizar como una declaración"
Tratar de utilizar una normal si no funciona bien:
// :(
items.ForEach(item => if (item.Contains("I Care About")) {whatICareAbout += item + ", ";}
¿No es posible?
Sheesh Estoy excepcionalmente impresionado con las respuestas, todo en unos minutos después de preguntar :) Creo que @SLaks responde al intento de mi pregunta, pero Aggregate() me deja boquiabierto. :) Gracias de nuevo a todos :) – Jamezor
Tenías una expresión de cadena como un tipo de operador condicional, y necesitabas una declaración para tu método .ForEach(). Es por eso que el error de compilación estuvo allí. –
@Roman - ¡Lo tengo ahora! Pienso en un? x: y como shorthand para if (a) {x} else {y} pero? devuelve el valor de x e y, que era una cadena en este caso ... – Jamezor