当前位置:  开发笔记 > 编程语言 > 正文

LINQ to SQL扩展方法,用于排序和分页

如何解决《LINQtoSQL扩展方法,用于排序和分页》经验,为你挑选了1个好方法。

我找到了一个处理LINQ排序和分页的扩展方法.虽然这很好用,但我试图看看是否有其他方法可以使用它.

目前,扩展方法的代码如下:

public static IQueryable Page(
  this IQueryable obj, 
  int page, 
  int pageSize, 
  System.Linq.Expressions.Expression> keySelector, 
  bool asc, 
  out int rowsCount)
{
    rowsCount = obj.Count();

    int innerRows = (page - 1) * pageSize;

    if (asc)
        return obj.OrderBy(keySelector).Skip(innerRows).Take(pageSize).AsQueryable();
    else
        return obj.OrderByDescending(keySelector).Skip(innerRows).Take(pageSize).AsQueryable();
}

该方法接受一个基于类型的表达式.

在我的经销商类中,我有一个方法GetDealers,它基本上调用它,即

db.User.Page(1, 2, p => p.User.UserProperty.Name, true, out rowCount)

从事物的呈现方面来看,我不知道或可以访问上述表达,例如

ListView1.DataSource = users.GetDealers("SortColumn", pageNo, pageSize, out rowCount, bool asc);
ListView1.DataBind();

唯一的方法是在我的GetDealers方法中有一个switch语句,然后转换为表达式.有没有办法绕过这个,或者这个方法好吗?



1> Michael La V..:

我不确定你在问什么,但我相信这是我对自己的看法.如果您想知道如何根据字符串动态排序结果,而不是正确的LINQ表达式,那么您很幸运.

Scott Guthrie发表了一篇关于这个主题的精彩文章.它引用了一个Microsoft文件,它扩展了任何IQueryable对象以支持动态排序. C#动态查询库(包含在\ LinqSamples\DynamicQuery目录中).只需将页面添加到您的App_Code文件夹并在项目中包含"Using System.Linq.Dynamic",您就可以使用以下语法:

myUsers = myUsers.OrderBy("LastName");

我希望这有帮助!

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有