Esta es una posibilidad muy remota, ya sé ...¿Usar Linq para ejecutar un método en una colección de objetos?
Digamos que tengo una colección
List<MyClass> objects;
y quiero correr el mismo método en todos los objetos de la colección, con o sin un retorno valor. Antes de LINQ habría dicho:
List<ReturnType> results = new List<ReturnType>();
List<int> FormulaResults = new List<int>();
foreach (MyClass obj in objects) {
results.Add(obj.MyMethod());
FormulaResults.Add(ApplyFormula(obj));
}
me habría amor a ser capaz de hacer algo como esto:
List<ReturnType> results = new List<ReturnType>();
results.AddRange(objects.Execute(obj => obj.MyMethod()));
// obviously .Execute() above is fictitious
List<int> FormulaResults = new List<int>();
FormulaResults.AddRange(objects.Execute(obj => ApplyFormula(obj)));
no he encontrado nada que pueda hacer esto. ¿Hay tal cosa?
Si no hay nada genérica como que he planteado anteriormente, al menos tal vez hay una manera de hacerlo para los fines que estoy trabajando ahora: Tengo una colección de un objeto que tiene una clase contenedora:
class WrapperClass {
private WrappedClass wrapped;
public WrapperClass(WrappedClass wc) {
this.wrapped = wc;
}
}
Mi código tiene una colección List<WrappedClass> objects
y quiero convertir eso a un List<WrapperClass>
. ¿Hay alguna manera inteligente LINQ de hacer esto, sin hacer la tediosa
List<WrapperClass> result = new List<WrapperClass>();
foreach (WrappedClass obj in objects)
results.Add(new WrapperClass(obj));
Gracias ...
+1 Me gusta el segundo mejor :) –
Dios mío, fue así de simple? ¡Maravilloso! ¡ME ENCANTA LINQ! –