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

  • 相关阅读:
    static变量的生命周期
    关于C++的new是否会对内存初始化的问题
    行列式的本质是什么?
    C++本质:类的赋值运算符=的重载,以及深拷贝和浅拷贝
    C++拷贝(复制)构造函数详解
    随机生成指定长度字符字符串(C语言实现)
    【npm】npm install的报错
    【HTTP】http请求url参数包含+号,被解析为空格
    【ngx-ueditor】百度编辑器按下Shift键不触发contentChange事件
    【Angular】No component factory found for ×××.
  • 原文地址:https://www.cnblogs.com/wenjl520/p/1619400.html
Copyright © 2020-2023  润新知