Ответ 1
Вы должны иметь возможность создать новый анонимный объект без объявленного типа:
var listOfFoo = myData.Select(x => new {
someProperty = x.prop1,
someOtherProperty = x.prop2
});
В настоящее время в LINQ следующие компиляции и работают очень хорошо:
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; };
}
Однако последние несколько версий .NET/С# расширили роль динамических объектов, таких как ExpandoObject
, и мне интересно, есть ли способ в основном сделать это:
var listOfFoo = myData.Select(x => new ExpandoObject{
someProperty = x.prop1,
someOtherProperty = x.prop2
});
Очевидно, что я уже пробовал код выше, но мне кажется, что я чего-то не хватает.
Вы должны иметь возможность создать новый анонимный объект без объявленного типа:
var listOfFoo = myData.Select(x => new {
someProperty = x.prop1,
someOtherProperty = x.prop2
});
Нет ничего, что помешало бы вам использовать Select
для возврата коллекции ExpandoObject, вы просто неправильно создаете ExpandoObject
. Здесь один из способов:
var listOfFoo = myData.Select(x =>
{
dynamic expando = new ExpandoObject();
expando.someProperty = x.prop1;
expando.someOtherProperty = x.prop2;
return (ExpandoObject)expando;
});