微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我有一份特权列表. 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()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐