我正在使用一个函数来允许来自Web UI的查询组合,我将实现分页功能,它可用于DataBound控件,如ObjectDataSource,gridView等:
public class MyClass<TEntity> where TEntity : class
{
FakeEntities xxx = new FakeEntities();
public IEnumerable<TEntity> Get(Func<IQueryable<TEntity>, IQueryable<TEntity>> queryExpression)
{
var query = xxx.Set<TEntity>();
return queryExpression(query).ToList();
}
public int Count()
{
// What Can I return?
}
}
// **** USAGE ****
MyClass<User> u = new MyClass<User>();
var all = u.Get(p => p.Where(z => z.Account == "Smith").OrderBy(order => order.IdOther).Skip(1).Take(2));
以上查询使用Take and Skip功能,我可以获得实体的真实数量吗?显然我必须返回Query Count而不修改过滤器表达式。
答案 0 :(得分:0)
我找到了这个解决方案:Get count of an IQueryable<T>
但是我得到带有内部消息的targetInvocationException {“此方法支持LINQ to Entities基础结构,不能直接在您的代码中使用。”}
我知道我的请求可能是异常的,因为最佳做法应该强制将“演示需求”移到某个包装类,这就是我要做的。因此,我不再需要在我的业务逻辑类上获取Count实体。
这只是UI的关注点。
谢谢你。