详细阐述linq动态排序
创始人
2024-06-07 08:50:39
0

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

想实现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动态排序解决方法的简单介绍。

【编辑推荐】

  1. 详谈Linq查询结果分析的方法
  2. 简简单单学习Linq查询语法
  3. 详细阐述Linq插入数据的操作方法
  4. 浅析Linq插入数据的实现方法
  5. 简单解决Linq多条件组合问题

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...