respository.GetPaged<S_Users>(out count, m => m.LoginName.Contains("a"),"LoginName asc,LoginNum desc", 1, 20); public IList<TEntity> GetPaged<TEntity>(out int total, Expression<Func<TEntity, bool>> filter = null, Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null, int index = 1, int size = 20) where TEntity : class
{
int skipCount = (index - 1) * size;
var query = Get(filter, orderBy);
total = query.Count();
query = skipCount > 0 ? query.Skip(skipCount).Take(size) : query.Take(size);
return query.ToList();
} public IList<TEntity> GetPaged<TEntity>(out int total, Expression<Func<TEntity, bool>> filter = null, string orderBy = null, int index = 1, int size = 20) where TEntity : class
{
int skipCount = (index - 1) * size;
var query = Get(filter, orderBy);
total = query.Count();
query = skipCount > 0 ? query.Skip(skipCount).Take(size) : query.Take(size);
return query.ToList();
} public static class QueryExtensions
{
public static IQueryable<T> OrderBy<T>(this IQueryable<T> source, string sortExpressions)
{
if (source == null)
{
throw new ArgumentNullException("source");
} string sortDirection = String.Empty;
string propertyName = String.Empty; sortExpressions = sortExpressions.Trim(); string[] sorts = sortExpressions.Split(',');
for (int i = 0; i < sorts.Length; i++)
{
string sortExpression = sorts[i];
int spaceIndex = sortExpression.Trim().IndexOf(" ");
if (spaceIndex < 0)
{
propertyName = sortExpression;
sortDirection = "ASC";
}
else
{
propertyName = sortExpression.Substring(0, spaceIndex);
sortDirection = sortExpression.Substring(spaceIndex + 1).Trim();
} if (String.IsNullOrEmpty(propertyName))
{
return source;
} ParameterExpression parameter = Expression.Parameter(source.ElementType, String.Empty);
MemberExpression property = Expression.Property(parameter, propertyName);
LambdaExpression lambda = Expression.Lambda(property, parameter); string methodName = string.Empty;
if (i == 0)
{
methodName = (sortDirection.ToUpper() == "ASC") ? "OrderBy" : "OrderByDescending";
}
else
{
methodName = (sortDirection.ToUpper() == "ASC") ? "ThenBy" : "ThenByDescending";
} Expression methodCallExpression = Expression.Call(typeof(Queryable), methodName,
new Type[] { source.ElementType, property.Type },
source.Expression, Expression.Quote(lambda)); source = source.Provider.CreateQuery<T>(methodCallExpression); }
return source; }
}

最新文章

  1. sqlserver实现数据库读写分离介绍
  2. Wiki设置
  3. 微信开发订阅号(ASP.NET MVC4+jquery mobile+AppHarbor发布)
  4. [SHELL]判断一个命令是否存在
  5. eclispe 无法启动调试 cannot connect to VM
  6. VC 单文档视图分割
  7. 定制Eclipse IDE之杂症篇
  8. Javascript之spry菜单栏
  9. wall
  10. MyEclipse建立JVM内存大小
  11. Redis相关命令及Jedis的demo(转)
  12. MonkeyRunner源码分析之-谁动了我的截图?
  13. 内核对象kobject和sysfs(4)——kset分析
  14. OminiMarkupPreview快捷键
  15. JAVASE高级2
  16. 业务线--node中间层做一个透传的项目
  17. Map&lt;String,Integer&gt;acount字符串出现的次数
  18. Flex 项目属性:flex 布局示例
  19. iis url rewrite http-&gt;https non-www-&gt;www
  20. C# 版本的24点实现

热门文章

  1. 任务06——封装与单元测试(Markdown版)
  2. spring多数据源事务配置
  3. python 元类metaclass
  4. python模块学习(一)
  5. myBatis 课纲
  6. 入坑第二式 golang入坑系列
  7. php的异常和处理
  8. Kattis - abc 【水】
  9. c# 泛型(Generic)
  10. Chrome 的 Rendering 监听器