zoukankan      html  css  js  c++  java
  • linq动态排序解决方法

    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<int>("", 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动态排序解决方法的简单介绍。

  • 相关阅读:
    委托和事件
    解决kalilinux:“下列签名无效: KEYEXPIRED 1425567400"
    【c# 学习笔记】委托的使用
    【c# 学习笔记】c#委托是什么
    【c# 学习笔记】面向对象编程的应用
    【c# 学习笔记】接口与抽象类
    【C# 开发技巧】番外篇故事-我是一个线程
    【物联网硬件安全】二、固件分析-固件逆向
    【物联网硬件安全】二、固件分析-固件提取
    【物联网硬件安全】一、硬件分析-电路分析
  • 原文地址:https://www.cnblogs.com/wenjl520/p/1619400.html
Copyright © 2011-2022 走看看