135-1821-9792

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

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.wenjiangwz.cn/article/dpdhish.html

其他资讯



Copyright © 2009-2022 www.wenjiangwz.cn 成都网站建设公司 版权所有 蜀ICP备19037934号