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

  • 相关阅读:
    使用积分图像统计元素
    compareHist
    均值平移算法
    课后作业-阅读任务-阅读提问-1
    《对软件工程课程的期望》
    自我介绍
    作业
    结对-结对编项目作业名称-需求分析
    对软件工程课程的期望
    自我介绍
  • 原文地址:https://www.cnblogs.com/roucheng/p/linqorderby.html
Copyright © 2011-2022 走看看