linq的写法

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排序
       //这时我们就要用到动态排序:
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
        */      
}
private static object GetPropertyValue(object obj, string property)
{
    System.Reflection.PropertyInfo propertyInfo=obj.GetType().GetProperty(property);
    return propertyInfo.GetValue(obj, null);
}

posted @ 2014-02-25 08:46  左立军  阅读(60)  评论(0)    收藏  举报