我有一个LINQ到实体模型与表每个层次结构继承。我有一个基类型的查询,我想做一个特定的依赖于类型的逻辑。例如:
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();有没有办法在不单独处理每个派生类型的IQueryables的情况下做到这一点:
// 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();发布于 2013-04-18 21:49:24
OfType<DerivedType1>() 将返回一个IEnumerable,如果可能的话,尝试将基本类型更改为IEnumerable而不是IQueryable,在使用IQueryable时可能会增加一些SQL限制。
当然,如果你实际上不是在查询数据库的话?
https://stackoverflow.com/questions/12165805
复制相似问题