通用Iqueryable过滤器

时间:2014-09-01 08:44:58

标签: .net generics filter

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

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; 
}

最后一行(return)抛出异常:“无法转换类型为'System.Data.Entity.Infrastructure.DbQuery 1[C]' to type 'System.Linq.IQueryable 1 [A]'的对象。”

有谁知道如何修复它? 提前致谢

1 个答案:

答案 0 :(得分:0)

我通过添加接口D使其工作。最终的解决方案如下:

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