c# .net dynamic duck-typing expandoobject

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; });