我希望这不是一个非常基本的问题 - 我已经看过类似的问题,但似乎无法理解,所以我伸手去寻求帮助。
我正在使用我想要通用的存储库模式 - 这是我对通用的所有内容:
static public IQueryable<T> Get(Func<IQueryable<T>> pred, uint page=0, uint pageSize=10)
{
return pred()
.Skip((int)(page * pageSize))
.Take((int)pageSize);
}
所以我想调用它,但是对于我尝试的任何lambda,都会得到一个“无效的参数”。
如果我声明一个返回IQueryable的方法并将其作为第一个参数传入,则无效编译错误。我很难过。
请帮帮忙?用lambda调用它的正确方法是什么?或者,如果我的仿制品不合适,最好如何声明它?我假设一个返回IQueryable的Func最好......
答案 0 :(得分:0)
Get缺少T generic
static public IQueryable<T> Get<T>(Func<IQueryable<T>> pred, uint page = 0, uint pageSize = 10)
{
return pred()
.Skip((int)(page * pageSize))
.Take((int)pageSize);
}
答案 1 :(得分:0)
通常情况下,只需要接受Func<IQueryable<T>>,
,您就可以使用IQueryable<T>
直接使用{<1}}。
static public IQueryable<T> Get<T>(IQueryable<T> source, uint page=0, uint pageSize=10)
{
return source
.Skip((int)(page * pageSize))
.Take((int)pageSize);
}