来自元组组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为true的组,我想检查是否所有对应的isEqual标志都为true。对于上面给定的值,我只希望group2group3group4是相等的(根据duplicateCheckEnabledflag 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);

您仍然应该将所有这些值放入数组/列表中,最好是自定义结构/类。

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

相关内容

  • 没有找到相关文章

最新更新