zoukankan      html  css  js  c++  java
  • linq 实现动态 orderby

    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

  • 相关阅读:
    每日一题(文化课)一题---------19/7/30
    XXXXX,这个域名
    CF1037E. Trips
    bzoj3124: [Sdoi2013]直径 树形dp two points
    luogu P3952 时间复杂度 模拟
    AGC016D
    CF444E. DZY Loves Planting
    模拟赛
    HDU 3949 XOR [线性基|高斯消元]
    博客搬家
  • 原文地址:https://www.cnblogs.com/roucheng/p/linqorderby.html
Copyright © 2011-2022 走看看