提问人:KeenUser 提问时间:10/15/2020 最后编辑:Dmitry BychenkoKeenUser 更新时间:10/15/2020 访问量:274
来自元组 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);
这些值是从外部逻辑填充的。我将使用另一个对象来区分这些元组属性中的每一个。
对于从 到 的所有组,我想检查是否所有相应的标志都为 true。对于上面给定的值,我只想考虑 和 isEqual(根据 ),以便表达式的计算结果为group1
group5
duplicateCheckEnabled
isEqual
group2
group3
group4
duplicateCheckEnabled
flag true
bool isDuplicate = group2.isEqual && group3.isEqual && group4.isEqual
我是否应该使用数组来仅存储我希望 isEqual 比较应用的组?
答:
1赞
Sweeper
10/15/2020
#1
虽然这可以在没有数组的情况下完成:
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));
评论