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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Ubuntu 15.10 安装 Rabbitvcs

    Ubuntu 15.10 安装 Rabbitvcsppa按回车继续或者Ctrl+c取消添加gpg:钥匙环‘/tmp/tmp_70d0zm5/secring.gpg’已建立gpg:钥匙环‘/tmp/tmp_70d0zm5/pubring.gpg’已建立gpg:下载密钥‘34EF4A35’,从hkp服务器keyserver.ubuntu.comgpg:/tmp/tmp_70d0zm5/trustdb.gpg:建立了信任度数据库gpg:密钥34EF4A35:公钥“LaunchpadRabbitVCS”已导入gpg:合计被处理的数量:1g

    2022年7月18日
    11
  • out of memory解决方法(python慢的原因)

    折腾了一整天又换电脑又重装系统重装各种软件插件 最后发现outofmemory只是因为少写了一行代码 内心的崩溃无法用语言形容 虽然本来是乌龙一场但是这个过程中解决问题get一些新技能 也不能说完全没有收获【一个大写的心理安慰】开始我的4G小笔记本outofmemory之后,我换了一个32G内存的电脑 各种重装系统折腾半天好不容易都装好了程序可

    2022年4月15日
    171
  • poe交换机跟普通交换机的区别_以太网交换机和poe交换机的区别

    poe交换机跟普通交换机的区别_以太网交换机和poe交换机的区别众所周知电气设备只有通电后才能工作,而一些基于IP网络的各种设备也同样需要供电才能使用,自从有了poe供电技术后IP网络设备就又多了一种供电方式。那么具体poe工业以太网交换机可以当普通工业以太网交换机用吗,poe工业以太网交换机有哪些优势呢?poe工业以太网交换机可以当普通工业以太网交换机用吗poe工业以太网交换机的可以当作普通工业以太网交换机来用的,不过必要是正规厂商生成的支持802.3at/af协议的poe工业以太网交换机,因为这些poe工业以太网交换机在供电前会先提供1个低电压检测前..

    2022年10月5日
    0
  • CSS自定义鼠标样式[通俗易懂]

    CSS自定义鼠标样式[通俗易懂]效果图原理cursor属性:cursor属性规定要显示的光标的类型(形状)。该属性定义了鼠标指针放在一个元素边界范围内时所用的光标形状。使用url,可自定义鼠标图标。cursor:url(‘https://blog-static.cnblogs.com/files/lucas–liu/cat6.ico’),default;自定义图标注意点尺寸最好选择不大于于32*32像素的Opera9.3和Safari3不支持url值图片最好用绝对路径浏览器兼容性不一

    2022年5月31日
    43
  • 浅谈SQL游标

    浅谈SQL游标
    游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次以行或者多行前进或向后浏览数据的能力。我们可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理。游标允许你选择一组数据,通过翻阅这组数据记录——通常被称为数据集,检查每一个游标所在的特定的行。你可以将游标和局部变量组合在一起对每一个记录进行检查,当游标移动到下一个记录时,来执行一些外部操作。游标的另一个常见的用法是:保存查询结果以备以后使用。一个游标结果集是通过执

    2022年7月12日
    23
  • 如何理解红黑树_位置与方向的初步了解

    如何理解红黑树_位置与方向的初步了解教你透彻了解红黑树 作者:July、saturnman  2010年12月29日本文参考:Google、算法导论、STL源码剖析、计算机程序设计艺术。推荐阅读:Left-LeaningRed-BlackTrees,DagstuhlWorkshoponDataStructures,Wadern,Germany,February,2008.直接下载:http://www.cs

    2022年8月18日
    7

发表回复

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

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