如何按降序列出对象列表?
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
的结果
代码:
[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