如何按降序列出对象列表?

How to list the List of Objects in descending order?

代码:

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public List<object> GetDetails()
    {
    ........
    ........
    var employeeList = ....;

    var employees = new List<Object>();

    foreach (var employee in employeeList)
    {
      var record = .....;

        var number = record.Select(x => x.number).FirstOrDefault();
        var name = record.Select(x => x.name).FirstOrDefault();

        projects.Add(
                      new
                      {
                          EmployeeNumber = number,
                          EmployeeName = name
                      });
    }
    return employees;
}

我尝试了以下代码,但它抛出一条错误消息,指出需要实施 IComparable

employees.OrderByDescending(x => x);

我想return根据EmployeeNumber降序排列的员工。

由于employees是用匿名类型填充的List<object>,填充后不能轻易排序(至少不是强类型),但是如果使用Select您可以在任何后续的 linq 扩展中使用匿名类型,而不是 for each。

因此,不要使用 foreach 填充列表,而是首先使用类似以下内容对源进行排序:

employees = employeeList.Select(employee =>
            {
                var record = .....;

                var number = record.Select(x => x.number).FirstOrDefault();
                var name = record.Select(x => x.name).FirstOrDefault();

                return
                              new
                              {
                                  EmployeeNumber = number,
                                  EmployeeName = name
                              };
             }).OrderByDescending(e => e.EmployeeNumber).Cast<object>().ToList();

请注意,此处使用 ToList 创建列表,但您也可以枚举 (foreach) OrderByDescending

的结果