鉴于MyEnum,类MyClass财产EnumValue,并IList<MyClass> list有一个聪明的LINQ的方法来确定不枚举值在一个以上的列表元素被发现,而无需编写一个循环?
我知道一点代码高尔夫球,但这是我正在编写的真实世界的代码,我想知道它是否有可能以一种非恐怖的方式存在?
例如:
foreach (var e in Enum.GetValues(typeof(MyEnum)))
Assert.IsTrue(list.Count(x => x.EnumValue == e) <= 1);
Run Code Online (Sandbox Code Playgroud)
如果要检查对象中的MyEnum值是否list最多出现一次,则可以list按EnumValue属性值对项目进行分组,并检查这些组中的项目数:
bool result = list.GroupBy(c => c.EnumValue).All(g => g.Count() == 1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |