来自元组组 C# 的条件布尔检查

Conditional bool check from tuple groups C#

我以为这是一个简单的问题,结果至少对我来说没有那么简单。

我有

(bool isEqual, bool duplicateCheckEnabled) group1 = (false, false);
(bool isEqual, bool duplicateCheckEnabled) group2 = (true, true);
(bool isEqual, bool duplicateCheckEnabled) group3 = (true, true);
(bool isEqual, bool duplicateCheckEnabled) group4 = (false, true);
(bool isEqual, bool duplicateCheckEnabled) group5 = (false, false);

这些值是从外部逻辑填充的。我会使用另一个对象 属性 中的每一个。 对于从 group1group5 的所有组 duplicateCheckEnabled 为真,我想检查所有相应的 isEqual 标志是否为真。对于上面给定的值,我只想考虑 group2group3group4 isEqual(根据 duplicateCheckEnabled flag true),以便表达式评估为

bool isDuplicate = group2.isEqual && group3.isEqual && group4.isEqual

我是否应该使用数组来仅存储我希望应用 isEqual 比较的组?

尽管这可以在没有数组的情况下完成:

bool isDuplicate = (!group1.duplicateCheckEnabled || group1.isEqual) &&
                   (!group2.duplicateCheckEnabled || group2.isEqual) &&
                   (!group3.duplicateCheckEnabled || group3.isEqual) &&
                   (!group4.duplicateCheckEnabled || group4.isEqual) &&
                   (!group5.duplicateCheckEnabled || group5.isEqual);

您仍应将所有这些值放入 array/list,最好是自定义 struct/class。

YourCustomStruct[] groups = { ... };
bool isDuplicate = groups.Aggregate(true, (x, y) => x && (!y.DuplicateCheckEnabled || y.IsEqual));