我在asp.net mvc应用程序(v3)和EntityFramework(v4)中使用存储库模式。 我想添加到存储库分页功能。我有以下示例代码:
public PagedResult<T> GetPaged(int offset = 0, int limit = PagedResult<T>.NoLimit, Expression<Func<T, bool>> predicate = null)
{
var res = BaseQ.Where(_predicate);//.Skip(offset);
if (predicate != null)
res = res.Where(predicate);
res = res.Skip(offset);
if (limit != PagedResult<T>.NoLimit)
{
res = res.Take(limit);
}
return new PagedResult<T>(res, res.Count(), offset, limit);
}
但是,这不起作用,因为Entity框架会抛出一个异常,我应该在OrderBy
之前调用Skip
。
我想知道如何以通用方式实现它,以便从外部插入表达式。然后我会将其作为参数传递。
也许还有另一种解决这个问题的方法。
[编辑] 我发现这可以通过传入属性的名称并创建一个表达式来完成,但我想实际上只是使用它,因为我正在使用它在OrderBy中。所以请传递(c=>c.ID)
例如。
提前感谢任何想法
答案 0 :(得分:0)
我已决定传入一个字符串并从中创建表达式