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

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

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

(0)
上一篇 2021年12月26日 下午12:36
下一篇 2021年12月26日 下午12:36


相关推荐

  • sdk (软件开发工具包)

    sdk (软件开发工具包)软件开发工具包 外语首字母缩写 SDK 外语全称 Software nbsp Development nbsp Kit 一般都是一些软件工程师为特定的软件包 软件框架 硬件平台 操作系统等建立应用软件时的开发工具的集合 nbsp 1 nbsp 软件开发工具包括广义上指辅助开发某一类软件的相关文档 范例和工具的集合 软件开发工具包是一些被软件工程师用于为特定的软件包 软件框架 硬件平台 操作系统等创建应用软件的开发工具的集合

    2026年3月19日
    2
  • AppSettings和ConnectionStrings的区别

    AppSettings和ConnectionStrings的区别AppSettings是ASP.NET1.1时期用的,在.NETFramework2.0中,新增了ConnectionStrings. 1.  providerName=”System.Data.SqlClient”/>  或是  providerName=”System.Data.SqlClient”/>  在里,在页面还可以这样引用.

    2022年5月21日
    51
  • stm32 sd卡读写_sd卡引脚定义图

    stm32 sd卡读写_sd卡引脚定义图SD卡   SD卡(SecureDigitalMemoryCard)即:安全数码卡,它是在MMC的基础上发展而来,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制。   SD卡按容量分类,可以分为3类:SD卡、SDHC卡、SDXC…

    2022年10月3日
    6
  • OpenClaw 超强 AI 助理实测:自动订票\会议邀请\卡路里计算\安装全攻略

    OpenClaw 超强 AI 助理实测:自动订票\会议邀请\卡路里计算\安装全攻略

    2026年3月13日
    2
  • 深度|常见IT人才外包存在的问题及解决建议

    深度|常见IT人才外包存在的问题及解决建议何谓“IT人才外包”IT人才外包,是指企业根据需要将某一项或几项项目开发中所涉及的工作外包出去,交由其他企业安排程序员驻点开发。IT人才外包也叫程序员外包、程序员外派。在IT人才外包中,外包公司提供程序员之后,就不再对程序员进行指挥。用工单位在生产经营上,对派遣员工拥有和正式员工一样完整的管理、指挥权力,但是每个程序员的工资、社保等费用由外包公司。IT人才外包的好处与存在的问题1人才外包的好处1、…

    2022年5月19日
    56
  • 多台路由器堆叠_h3c路由器堆叠配置命令[通俗易懂]

    多台路由器堆叠_h3c路由器堆叠配置命令[通俗易懂]本次网络的拓扑结构是三台交换机连接到一起,依次为A交换机,B交换机和C交换机。交换机A是主交换机,他通过G1/1接口连接B交换机的G1/1接口,通过G2/1连接C交换机的G1/1。所有G端口都设置为VLAN100。这个A交换机作为主交换机完全是网络管理员自己选择的,实际上我们可以随意的将ABC中的任何一个选择为主交换机,大家根据实际情况选择即可。IP地址与Trunk设置:首先将网络的管理VLAN…

    2022年10月17日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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