通用Iqueryable筛选器



我正在尝试重构当前的过滤解决方案。我有三个班:

class A : C { }
class B : C { }
class C { }

有一种方法可以接受通用参数:

private static IQueryable<T> ApplyFilter<T>(IQueryable query, Filter filter)
{
    IQueryable<C> qq = query.Cast<C>();
    if(q == null)
        throw new Exception("can not cast");
    // applying filter
    return (IQueryable<T>) q; 
}

最后一行(返回)引发异常:"无法强制转换类型为"System.Data.Entity.Infrastructure.DbQuery 1[C]' to type 'System.Linq.IQueryable 1[A]"的对象。"

有人知道怎么修吗?提前感谢

我通过添加接口D使其工作。最终的解决方案看起来像:

private static IQueryable<T> ApplyFilter<T>(IQueryable query, Filter filter)
    where T: class, DInterface
{
    // can access C class props
    return query; 
}

最新更新