gpt4 book ai didi

c# - Linq OrderBy Count In 链表

转载 作者:太空宇宙 更新时间:2023-11-03 12:42:19 25 4
gpt4 key购买 nike

我已经挣扎了一段时间了。我想要做的就是按关系树中第三个 child 的 Count() 的记录列表排序。下面涉及到的3张表我会尝试画出来,如果我没有使用stackoverflow标准请见谅:

网站 ----> 角色 ----> 权限

换句话说,一个网站可以有多个角色,一个角色可以有多个权限。所以这是一对多。

当我尝试这样的事情时:

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 个“简单”项目,但不能比较两个集合。 (你会根据元素的数量来做吗?..最大的元素?它是通用的,所以最大的甚至是什么意思......)

尝试这样的事情:

List<Website> websites = Model.WebsiteOptions.OrderBy( o => o.Roles.Max( r => r.RolePermissions.Count ) ).ToList();

这将订购您的 Website由具有最高 RolePermissions 计数的选项决定

关于c# - Linq OrderBy Count In 链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38483380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com