У меня есть два следующих класса:
public class Base
{
public int Id { get; set; }
public string PropertyA { get; set; }
}
[NotMapped]
public class Derived : Base
{
public string PropertyB { get; set; }
}
И у меня есть следующий запрос:
var baseQ = from b in db.Bases
let propertyB = SomeCalculation()
select new { Base = b, PropertyB = propertyB };
Это работает как есть.То, что я хочу, это что-то вроде этого (псевдокод):
List<Derived> list = (from b in db.Bases
let propertyB = SomeCalculation()
select new { Base = b, PropertyB = propertyB }).ToList();
Можно ли выполнить "Down-Cast" выбор к производному классу, или мне нужно написать конструктор для класса Derivedкоторый выглядит примерно так:
public Derived(Base b, string b) { ... }
Мое окончательное решение : я изменил производный класс на следующий (поскольку вы даже не можете использовать строку. Формат в инициализаторе объекта):
public class Derived
{
public Base Base { get; set; }
public string PropertyB { get; set; }
public string CalculatedProperty { get { ... } }//For string.Format and other stuff
}
И я выполняю задание следующим образом:
List<Derived> list = (from b in db.Bases
let propertyB = SomeCalculation()
select new Derived { Base = b, PropertyB = propertyB }).ToList();