【发布时间】:2020-05-01 08:39:47
【问题描述】:
我有 2 个 CheckGroupActivity 类型的对象。
phoneActivity 和 gericaActivity,每个都有 Clients List 作为属性,Client 类有一个布尔属性 hasRestrictedClientAccess。
现在我想根据这个属性比较这 2 个列表,如果所有匹配,则返回 true。
尝试了以下解决方案,但它总是给我错误(意味着它们不相等),即使它们是。
var restrictedClientAccessIsSame = phoneActivity.Clients?.All(p => gericActivity.Clients.All(g => g.HasRestrictedClientAccess == p.HasRestrictedClientAccess))
【问题讨论】:
-
请不要将代码发布为图像并分享最小可重现示例
-
所以你想检查
phoneActivity[0].HasRestrictedClientAccess == gericaActivity[0].HasRestrictedClientAccessAND ``phoneActivity[1].HasRestrictedClientAccess == gericaActivity[1].HasRestrictedClientAccess` 等吗?这两个数组的长度肯定是一样的吗? -
.All 检查所有元素的条件是否为真,但情况可能并非如此。使用 .Where
-
@canton7 是的,没错。想这样检查。它们的长度也相同。
-
它们是否总是保证相同的顺序?我看到
Client有一个Id字段,所以我的假设是具有相同Id 的客户需要具有相同的HasRestrictedClientAccess值?如果两个列表的顺序相同,您可以使用 Zip 解决方案(在 imo 中仍然存在风险),如果不是,您需要在 Id 上查找匹配项并检查它们。