代码:
[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);
我希望以EmployeeNumber为基础退还员工。
答案 0 :(得分:3)
由于employees
是填充了匿名类型的List<object>
,因此您无法在填充后轻松对其进行排序(至少不是强类型),但如果使用Select
而不是for each,你可以在任何后续的linq扩展中使用匿名类型。
因此,不要使用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的结果