linq 实现动态 orderby

推荐:http://www.cnblogs.com/roucheng/p/dushubiji.html

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

class Pet  
{  
   public string Name{get;set;}  
   public int Age{get;set;}  
}  
void Main()  
{   
      Pet[] pets = { new Pet { Name="Tim", Age=18 },  
                   new Pet { Name="Allen", Age=22 },  
                   new Pet { Name="Bill", Age=20  } };  
       
//如果我们想根据Age进行排序  很容易想到这样来写:      
  var query= from p in pets  
             orderby p.Age  
             select p;  
               
       
  query.ToList().ForEach(q=>Console.WriteLine(q.Name +"     "+q.Age));  
        /* 得到结果:  
        Tim     18 
        Bill    20 
        Allen   22 
        */  
          
}  
//但是有时项目内有多个排序条件 如有时要根据Name排序 有时要根据Age排序  何问起 hovertree.com
       //这时我们就要用到动态排序:  
void Main()  
{   
    Pet[] pets = { new Pet { Name="Tim", Age=18 },  
                   new Pet { Name="Allen", Age=22 },  
                   new Pet { Name="Bill", Age=20 } };  
    Console.WriteLine("Before Orderby:/r/n");         
    pets.ToList().ForEach(p=>Console.WriteLine(p.Name +"     "+p.Age));  
       
  var query= from p in pets  
             orderby GetPropertyValue(p,"Age")    
             select p;  
               
    Console.WriteLine("/r/nAfter Orderby:/r/n");  
  query.ToList().ForEach(q=>Console.WriteLine(q.Name +"     "+q.Age));  
           /* 
        Before Orderby: 
        Tim     18 
        Allen   22 
        Bill    20 
        After Orderby: 
         
        Tim     18 
        Bill    20 
        Allen   22 
        */         
}  /* 何问起 hovertree.com */
private static object GetPropertyValue(object obj, string property)  
{  
    System.Reflection.PropertyInfo propertyInfo=obj.GetType().GetProperty(property);  
    return propertyInfo.GetValue(obj, null);  
} 

推荐:http://www.cnblogs.com/roucheng/p/dushubiji.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/120405.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • laravel拓展validator验证

    laravel拓展validator验证

    2021年10月26日
  • grid常用设置

    grid常用设置父元素1.dispaly:grid|inline-grid|subgrid;grid:生成块级网格inline-grid:生成行内网格subgrid:如果网格容器本身是网格项(嵌套网格容器),此属性用来继承其父网格容器的列、行大小2.grid-template-columns行大小grid-template-rows列大小3.单元格间距grid-column-…

  • java的反射(reflection)机制_腹部反射区图解

    java的反射(reflection)机制_腹部反射区图解1.什么是java反射java的反射机制是指在运行状态中,      对于任意一个类,都能知道这个类的所有属性和方法;      对于任意一个对象,都能够调用它的任意一个属性和方法;      这种动态获取的类的信息,和动态调用对象的方法的功能就是反射机制。2.反射的作用     在运行时,构造任意一个类的对象      在运行时,判断任意一个类的完整结构,比如属性,方法,内…

    2022年10月25日
  • 全排列 leetcode_leetcode top100

    全排列 leetcode_leetcode top100原题链接给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]题解回溯即可class Solution {public: vector<vector<int> >res; vector<int>t; void dfs(int num,int len,vecto

  • S3C2440移植uboot之编译烧写uboot

    S3C2440移植uboot之编译烧写uboot移植环境主机:VMWare–ubuntu16.04开发板:S3C24402440编译器:arm-linux-gcc-4.3.2.tgzu-boot:u-boot-2012.04.01.tar.bz2获取uboot进入https://www.denx.de/wiki/U-Boot下载uboot一直往下拉选择如下将下载好的压缩包解压到任意文件夹,并创建sourceinsig…

  • springboot上传文件大小限制的配置[通俗易懂]

    springboot上传文件大小限制的配置[通俗易懂]上传文件文件过大时出现如下错误:org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException:Thefieldpicexceedsitsmaximumpermittedsizeof1048576bytes.因为springboot内置tomact的的文件传输默认…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号