C# 对IEnumerable进行排序<;T>;在IQueryable内部呈现<;用户>;

C# 对IEnumerable进行排序<;T>;在IQueryable内部呈现<;用户>;,c#,asp.net-mvc,linq,sorting,sql-order-by,C#,Asp.net Mvc,Linq,Sorting,Sql Order By,我有一个返回IQueryable的对象,其中包含以下代码段: public string employeeId{get;set:} public string employeeName {get;set:} public IEnumerable<Role> userRoles {get;set:} 这里的问题是,我可以根据employeeId和employeeName进行排序,但不能基于roleDescription和RoleEnumber,因为类型是IEnumerable。基于每

我有一个返回IQueryable的对象,其中包含以下代码段:

public string employeeId{get;set:}
public string employeeName {get;set:}
public IEnumerable<Role> userRoles {get;set:}
这里的问题是,我可以根据employeeId和employeeName进行排序,但不能基于roleDescription和RoleEnumber,因为类型是IEnumerable。

基于每个IEnumerable项的排序将只包含一个项-类似于:

Employees.OrderBy(e => e.userRoles.First().roleDescription)

当一个
userRoles
大于另一个
userRoles
?@Servy。从未。在这种情况下,我们可以假设所有人的角色编号都相同,但角色描述因用户、管理员、编写者等而异。如果您无法定义哪个“大于”另一个,则无法对其进行排序。@user3715379您的意思是按第一个角色描述排序吗?我只能假设您不允许更新设计,否则,使用IEnumerable存储单个值是相当愚蠢的。最好只将自定义类型“Role”用作单个实体。现在,如果用户可以有多个角色,那就不同了,您需要为“角色”声明一个比较器,谢谢!让我在这里试一试。
Employees.OrderBy(e => e.userRoles.First().roleDescription)