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()

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...