Linq OrderBy Count In 链表
Linq OrderBy Count In linked list
我已经挣扎了一段时间了。我想要做的就是按关系树中第 3 个 child 的 Count() 的记录列表排序。下面涉及到的3张表我会尝试画出来,如果我没有使用Whosebug标准请见谅:
网站 ----> 角色 ----> 权限
换句话说,一个网站可以有1个以上的角色,一个角色可以有1个以上的权限。所以这是一个 1-to-many.
当我尝试这样的事情时:
List<Website> websites = Model.WebsiteOptions.OrderBy( o => o.Roles.OrderBy( r => r.RolePermissions.Count ) ).ToList();
我收到一个非常清楚的错误:
At least one object must implement IComparable.
但我仍然不知道如何根据每个角色拥有的权限数量对网站进行排序...我想要的是具有最多权限的角色的网站排在第一位。
请问有人知道或给我一些指导吗?
提前致谢。
你得到那个错误是因为在你的 OrderBy
中你应该指定如何排序集合 - 这意味着提供一个实现 IComparable
的对象。
在您的实现中,您实际上提供了另一个已排序的集合(尽管这无关紧要)。 IEnumerable<T>
不实现 IComparable<IEnumerable<T>>
而只是 IComparable<T>
- 它可以比较 2 "simple" 项但不能比较两个集合。 (你会根据元素的数量来做吗?..最大的元素?它是通用的,所以最大的甚至是什么意思......)
试试这样的东西:
List<Website> websites = Model.WebsiteOptions.OrderBy( o => o.Roles.Max( r => r.RolePermissions.Count ) ).ToList();
这将按照具有最高 RolePermissions 计数的选项对您的 Website
进行排序
我已经挣扎了一段时间了。我想要做的就是按关系树中第 3 个 child 的 Count() 的记录列表排序。下面涉及到的3张表我会尝试画出来,如果我没有使用Whosebug标准请见谅:
网站 ----> 角色 ----> 权限
换句话说,一个网站可以有1个以上的角色,一个角色可以有1个以上的权限。所以这是一个 1-to-many.
当我尝试这样的事情时:
List<Website> websites = Model.WebsiteOptions.OrderBy( o => o.Roles.OrderBy( r => r.RolePermissions.Count ) ).ToList();
我收到一个非常清楚的错误:
At least one object must implement IComparable.
但我仍然不知道如何根据每个角色拥有的权限数量对网站进行排序...我想要的是具有最多权限的角色的网站排在第一位。
请问有人知道或给我一些指导吗?
提前致谢。
你得到那个错误是因为在你的 OrderBy
中你应该指定如何排序集合 - 这意味着提供一个实现 IComparable
的对象。
在您的实现中,您实际上提供了另一个已排序的集合(尽管这无关紧要)。 IEnumerable<T>
不实现 IComparable<IEnumerable<T>>
而只是 IComparable<T>
- 它可以比较 2 "simple" 项但不能比较两个集合。 (你会根据元素的数量来做吗?..最大的元素?它是通用的,所以最大的甚至是什么意思......)
试试这样的东西:
List<Website> websites = Model.WebsiteOptions.OrderBy( o => o.Roles.Max( r => r.RolePermissions.Count ) ).ToList();
这将按照具有最高 RolePermissions 计数的选项对您的 Website
进行排序