我在字符串中有“按属性排序”的名称。我需要使用 Lambda/Linq 对对象列表进行排序。

前任:

public class Employee
{
  public string FirstName {set; get;}
  public string LastName {set; get;}
  public DateTime DOB {set; get;}
}


public void Sort(ref List<Employee> list, string sortBy, string sortDirection)
{
  //Example data:
  //sortBy = "FirstName"
  //sortDirection = "ASC" or "DESC"

  if (sortBy == "FirstName")
  {
    list = list.OrderBy(x => x.FirstName).toList();
  }

}
  • 不是使用一堆ifs来检查字段名(sortBy),而是有一种更简洁的排序方式
  • 排序是否知道数据类型?
  • 最佳答案

    这可以作为

    list.Sort( (emp1,emp2)=>emp1.FirstName.CompareTo(emp2.FirstName) );
    
    .NET 框架将 lambda (emp1,emp2)=>int 转换为 Comparer<Employee>.这具有强类型的优点。
    如果您需要降序/倒序,请反转参数。
    list.Sort( (emp1,emp2)=>emp2.FirstName.CompareTo(emp1.FirstName) );
    

    关于c# - 使用 Lambda/Linq to objects 对列表进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/722868/

    10-13 07:29