【问题标题】:Sorting an IEnumerable <T> present inside IQueryable<User> [closed]对 IQueryable<User> 中存在的 IEnumerable <T> 进行排序 [关闭]
【发布时间】:2016-06-20 18:26:28
【问题描述】:

我有一个对象,它返回 IQueryable,其中包含以下代码 sn-ps:

public string employeeId{get;set:}
public string employeeName {get;set:}
public IEnumerable<Role> userRoles {get;set:}

在“角色”模型下,我有以下 2 个属性:

public string roleDescription {get;set:}
public string roleNumber {get;set:}

这里的问题是我可以根据employeeId 和employeeName 进行排序,但不能基于roleDescription 和roleNumber,因为类型是IEnumerable。

【问题讨论】:

  • 什么时候userRoles大于另一个userRoles
  • @Servy。绝不。在这种情况下,我们可以假设所有人的角色编号相同,但角色描述因用户、管理员、作者等而异。
  • 如果您无法定义哪个“大于”另一个,则无法对其进行排序。
  • @user3715379 你的意思是按first角色描述排序吗?
  • 我只能假设您不允许更新设计,否则使用 IEnumerable 存储 SINGLE 值是相当愚蠢的。最好只使用自定义类型“角色”作为单个实体。现在,如果用户可以拥有多个角色,那就不同了,您需要为“角色”声明一个比较器

标签: c# asp.net-mvc linq sorting sql-order-by


【解决方案1】:

基于每个 IEnumerable 项目将只包含一个项目 - 它类似于:

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

【讨论】:

  • 谢谢!让我在这里试一试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
相关资源
最近更新 更多