Tengo un LINQ al modelo de entidades con herencia Table Per Hierarchy. Tengo una consulta sobre el tipo base, y quiero hacer una lógica específica dependiente del tipo. Por ejemplo:Transmitiendo a un tipo derivado en una consulta de LINQ a Entidades con herencia Tabla por jerarquía
IQueryable<BaseType> base = ...
// this works fine
var result = base.Select(b => b is DerivedType1 ? 1 : 2).ToList();
// this doesn't compile to SQL
var result2 = base.Select(b => b is DerivedType1 ? ((DerivedType1)b).DerivedProperty : null).ToList();
¿Hay alguna manera de hacer algo como esto sin procesar IQueryables de cada tipo derivado por separado:
// I'd rather not do this:
var resultA = base.OfType<DerivedType1>().Select(d => d.DerivedProperty);
var resultB = base.OfType<DerivedType2>().Select(d => default(int?));
var result = resultA.Concat(resultB).ToList();
Concat y Join parecen las únicas opciones. –
¿Podría ser el problema que su propiedad DerivedProperty no se pueda anular? Entonces, ¿podría confundirse la consulta en cuanto a si la columna permitía valores nulos? –