如何使用IQuerable.在我自己的课上选择

本文关键字:选择 自己的 我自己 何使用 IQuerable | 更新日期: 2023-09-27 18:20:40

我试图将一个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); 上遇到错误

它将不接受参数。。

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

任何想法都将不胜感激。。

谢谢。。

如何使用IQuerable.在我自己的课上选择

您已经将定义为泛型,然后定义了一个泛型函数,该函数重新使用类型参数T,这会混淆conpiler。没有理由在函数中添加通用参数,所以只需去掉它:

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

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