加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何在列表中找到具有一个不同值的相同类

发布时间:2020-12-16 01:26:31 所属栏目:百科 来源:网络整理
导读:我有一份特权列表. Privilege类有四个属性:Type,AccessType,Value和Action. 如果有多个权限,其中Type,AccessType和Value相同,但我想要抛出异常,但操作是不同的. 因此,例如p1和p2的列表会抛出异常: Privilege p1 = new Privilege{Type = "a",AccessType = "
我有一份特权列表. Privilege类有四个属性:Type,AccessType,Value和Action.
如果有多个权限,其中Type,AccessType和Value相同,但我想要抛出异常,但操作是不同的.

因此,例如p1和p2的列表会抛出异常:

Privilege p1 = new Privilege{Type = "a",AccessType = "a",Value = "a",Action = "a"};
Privilege p2 = new Privilege{Type = "a",Action = "b"};

我想使用LINQ,但不知道如何.

解决方法

所以你想允许重复类型访问类型值,但只有当操作也相同时?

bool throwException = pList
    .GroupBy(x => new { x.Type,x.AccessType,x.Value })
    .Any(g => g.Select(p => p.Action).Distinct().Count() > 1);

首先,我正在构建这三个属性的组.然后我检查这些组中是否包含多个动作.然后你可以抛出异常.

如果替换,可能会进行小的优化(如果重复列表很大)

Distinct().Count() > 1

Distinct().Skip(1).Any()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读