详细阐述linq动态排序

linq动态排序不是很好实现的,很多开发者都在这个方面有疑惑,所以笔者今天分享一下自己的经验,希望能给大家带来帮助。

创新互联公司专业为企业提供泸县网站建设、泸县做网站、泸县网站设计、泸县网站制作等企业网站建设、网页设计与制作、泸县企业网站模板建站服务,10年泸县做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

想实现linq动态排序就是linq的order by 后跟动态的函数可以用委托实现,但是发现实现委托函数时候:

 
 
 
  1. int testSelector(post p)
  2. {
  3.    ret urn p.Uu;
  4. }

这个返回类型受到了限制仅是相同类型的字段可以动态排序是不是Func selector 这个的实现我理解的有问题 ?

 
 
 
  1. public IEnumerable  Sort ( string userName, Func  
  2. selector)
  3.       {
  4.           return from post in posts
  5.                  where post.UserName == userName
  6.                  orderby selector(post) descending
  7.                  select post;
  8.       } 

这个函数的TKey限制只能是一种类型 ?有什么好的实现吗?

linq动态排序具体解决的代码

 
 
 
  1. public   class OrderBy
  2.   List  posts =  new List ();  
  3.   public List   GtePost()  
  4.   {
  5.     for (int i = 0, j=1000; i < 1000 ; i++, j--)
  6.      {
  7.         post p = new post();
  8.         p.Ty = i;
  9.         p.Uu=j;
  10.         p.UserName = "1";
  11.         posts.Add(p);
  12.      }
  13.    return posts;
  14.   }
  15.    
  16. /**//// 
  17.   /// Func  委托的实现  
  18.   /// 
  19.  ///   
  20.   ///   可以动态设置排序的列  
  21. int testSelector(post p)
  22. {
  23.     return p.Uu;
  24. }
  25.  public  IEnumerable  GetData()  
  26.     {
  27.        GtePost();
  28.        return Sort("", testSelector);
  29.     }
  30. public IEnumerable  Sort ( string userName, Func
  31.  TKey> selector)
  32.   {
  33.      return from post in posts
  34.      where post.UserName == userName
  35.      orderby selector(post) descending
  36.      select post;
  37.   }
  38. }

linq动态排序Code

 
 
 
  1. void BindData()
  2.   {
  3.       OrderBy o = new OrderBy();                   
  4.       post p=new post ();
  5.       this.dataGridView1.DataSource = o.GetData().ToList ();               
  6.   }

以上就是对linq动态排序解决方法的简单介绍。

分享文章:详细阐述linq动态排序
文章网址:http://www.csdahua.cn/qtweb/news0/62600.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网