c# - Usando LINQ, ¿es posible generar un objeto dinámico desde una instrucción Select? ¿Si es así, cómo?
.net dynamic (2)
Actualmente en LINQ, la siguiente compila y funciona muy bien:
var listOfFoo = myData.Select(x => new FooModel{
someProperty = x.prop1,
someOtherProperty = x.prop2
});
public class FooModel{
public string someProperty { get; set; };
public string someOtherProperty { get; set; };
}
Sin embargo, las últimas versiones de .NET / C # han ampliado el rol de los objetos dinámicos como ExpandoObject
y me pregunto si hay una forma de hacerlo básicamente:
var listOfFoo = myData.Select(x => new ExpandoObject{
someProperty = x.prop1,
someOtherProperty = x.prop2
});
Obviamente, ya probé el código anterior sin éxito, pero parece que me falta algo.
Debería poder crear un nuevo objeto anónimo sin ningún tipo declarado:
var listOfFoo = myData.Select(x => new {
someProperty = x.prop1,
someOtherProperty = x.prop2
});
No hay nada que le impida usar Select
para devolver una colección de ExpandoObject, simplemente no está construyendo correctamente el ExpandoObject
. Aquí hay una forma:
var listOfFoo = myData.Select(x =>
{
dynamic expando = new ExpandoObject();
expando.someProperty = x.prop1;
expando.someOtherProperty = x.prop2;
return (ExpandoObject)expando;
});