如何在我自己的类中使用IQuerable.Select

时间:2015-11-04 13:38:20

标签: c# entity-framework linq

我试图将IQuerable封装在我自己的泛型类中,然后通过我自己的Select()方法对此执行Select(),但我无法使其工作......

我有这个:(不是真正的工作代码)

public class PagedSpQuery<T>
    {
        private IQueryable<T> q = null;

        public PagedSpQuery(MyContext DB)
        {
            q = DB.MyEntity.SqlQuery("select * from MyTable").AsQuerable();
        }

        public IQueryable<T> Select<T>( Expression<Func<T, T>> selector)
        {
          return  q.Select(selector);    
        }
    }

我在q.Select(selector);

上收到错误消息

它不接受参数..

我可以在某种程度上遵循这个问题,但是如果可能的话,我无法理解如何让它发挥作用..

任何想法都会受到赞赏..

谢谢..

1 个答案:

答案 0 :(得分:2)

您已将定义为泛型,然后定义了一个重用类型参数T的泛型函数,这会混淆conpiler。没有理由在函数中添加泛型参数,因此请将其取下:

public IQueryable<T> Select(Expression<Func<T, T>> selector)
{
    return  q.Select(selector);    
}

但是你为什么要包装Linq方法呢?为什么不让类实现IQueryable<T>并使用Linq的实现?