public List<Abc> Get(string Order,string Sort)
        {
            //如果这样写,就默认是按ModuleTypeId进行ASC排序
            List<Abc> listAbc = Abc.GetAll().OrderBy(k => k.AbcId).ToList();
            return listAbc;            //用什么办法可以根据传进来的Order参数确定排序的列,根据Sort确定排序类型?
        }

解决方案 »

  1.   

     public List<Abc> Get(string Order, string Sort)
    {
        //如果这样写,就默认是按ModuleTypeId进行ASC排序
        List<Abc> listAbc = Abc.GetAll().OrderBy(k => string.Compare(Sort, "xxxxx") == 0 ? k.AbcId : k.ModuleTypeId).ToList();
        return listAbc;
    }
      

  2.   

    这样写明白吧? 如果是某一个值则k.AbcId 排序,否则按 k.ModuleTypeId排序
      

  3.   

    http://www.cnblogs.com/xxfss2/archive/2010/12/13/1905023.html
      

  4.   

    本帖最后由 caozhy 于 2013-09-16 14:09:35 编辑
      

  5.   

    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排序  
           //这时我们就要用到动态排序:  
    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);  
    }  
      

  6.   

    http://dynamiclinq.codeplex.com/用了这个,不明觉厉