【发布时间】:2020-04-05 02:47:58
【问题描述】:
我有两个bool 列表,它们的长度总是相同的。假设这是我的两个列表:
var list1 = new List<bool>() { true, false, true, false, false };
var list2 = new List<bool>() { true, true, true, false, true };
我想通过将逻辑 OR 运算符应用于任一列表上的每个相应索引来创建一个新列表。所以,如果我的两个列表是上面的,我的预期结果将如下。
真、真、真、假、真
现在,我可以使用这样的for 循环轻松地做到这一点:
var result = new List<bool>();
for (int i = 0; i < list1.Count; i++)
{
result.Add(list1[i] || list2[i]);
}
这非常有效,甚至不一定是低效的。但在我的应用程序中,我有超过 2 个列表,有时甚至 20 个,我需要获取所有列表中的 OR。
考虑到所有列表,有没有更简单的方法?
【问题讨论】:
-
你知道
.Zip()吗? -
@gunr2171 不是真的。让我查一下。
-
尝试同步相同长度的列表通常是primitive obsession 的症状,可以通过创建包含数据的类来解决。像两个值的逻辑或这样的属性可以是类属性。
-
@DourHighArch,这些列表实际上是一个类的属性。我正在开发一个带有数据网格的 WPF 应用程序,我根据这些列表的内容显示/隐藏列。数据网格显示文件的内容,由于不知道用户会选择哪些文件,所以不知道会有多少列。
标签: c# list linq boolean logical-operators