来自元组组 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);
这些值是从外部逻辑填充的。我会使用另一个对象 属性 中的每一个。
对于从 group1
到 group5
的所有组 duplicateCheckEnabled
为真,我想检查所有相应的 isEqual
标志是否为真。对于上面给定的值,我只想考虑 group2
、group3
和 group4
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));
我以为这是一个简单的问题,结果至少对我来说没有那么简单。
我有
(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);
这些值是从外部逻辑填充的。我会使用另一个对象 属性 中的每一个。
对于从 group1
到 group5
的所有组 duplicateCheckEnabled
为真,我想检查所有相应的 isEqual
标志是否为真。对于上面给定的值,我只想考虑 group2
、group3
和 group4
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));