黎明&岁月 发表于 2012-12-19 21:03:12

【转】Linq之动态排序(字符传入)

<div id="cnblogs_post_body"><div id="article_content" class="article_content"> 最近做的是一个MVC的项目,至于MVC是个啥东西,群里已经有很多朋友讲过,这里不再多讲了,本文的前提是在MVC项目的View中显示Table,对Table进行Sorting和Paging,我都知道View中要实现Sorting和Paging一定要有自己的Action进行响应,如果要实现Sorting和Paging,那么我们只能把参数传给Action,但是Action接收Sorting或Paging的参数,如何使用Linq实现Sorting和Paging呢?哎,终于说到和主题有关的了,而且还是以字符传参的方式在Linq中进行Sorting有点难实现,这就是我写这篇文章的目的。此文只是本人实现Linq的方法,如果高手路过请指点斧正,下面就来谈一谈。
二.本文内容
1. Linq中Paging的实现
2. Linq中动态排序的实现
3. 本文总结
4. 代码下载(下载)
三.Linq Paging的实现
  其实Paging已经有很多人讲过了,其文章已经是数不尽数了,其语句相对简单,如下:
  DatabaseDataContext db = new DatabaseDataContext();
  var result = from s in db.T_BC_PRODUCTs select s;
  return result .Skip(pageNumber * pageSize).Take(pageSize);
  以上的代码就实现了Paging的功能。好,Paging我们就说到这里,相信大家都能明白。
四.Linq Sorting动态排序的实现(根据字符参数)
在Linq排序有很多方法,网络上关于静态排序和部分动态排序的文章,而静态排序相对来说比较简单,也比较容易实现,这里我就不提了,有需要的朋友可以到网上去搜索,相信一大堆。哈哈!至于动态排序网上也有部分例子,但是我一个也没有试成功,呵呵!可能我还没有理解,所以迫于无耐就自己写了个,还请望高手斧正。
这里我们只说如何实现字符参数作为Linq Sorting的条件。
下面是实例步骤:
1.    创建一个页面,加入一个Button,用来实现排序,实现如下代码Button1_Click所示。

<div class="cnblogs_code"> 1 using System;
2 using System.Collections;
3 using System.Configuration;
4 using System.Data;
5 using System.Linq;
6 using System.Web;
7 using System.Web.Security;
8 using System.Web.UI;
9 using System.Web.UI.HtmlControls;
10 using System.Web.UI.WebControls;
11 using System.Web.UI.WebControls.WebParts;
12 using System.Xml.Linq;
13 using System.Collections.Generic;
14 using System.Reflection;
15 using System.Linq.Expressions;
16
17 namespace LinqTest
18 {
19     public partial class _Default : System.Web.UI.Page
20     {
21       protected void Page_Load(object sender, EventArgs e)
22       {
23
24       }
25
26       protected void Button1_Click(object sender, EventArgs e)
27       {
28             GridView1.DataSource = GetSchoolList("ID","desc",0,0);
29             GridView1.DataBind();
30       }
31
32       public IQueryable<T_BC_PRODUCT> GetSchoolList(string sortExpr, string sortDir, long pageNumber, int pageSize)
33       {
34             DatabaseDataContext db = new DatabaseDataContext();
35             var result = from s in db.T_BC_PRODUCTs select s;
36             IQueryable<T_BC_PRODUCT> query = DBHelper.SortingAndPaging<T_BC_PRODUCT>(result, sortExpr, sortDir,2,3);
37             return query;
38       }
39     }
40 }
页: [1]
查看完整版本: 【转】Linq之动态排序(字符传入)