C# 使用Foreach方法执行OR和操作

C# 使用Foreach方法执行OR和操作,c#,C#,我有下面一段使用foreach迭代器的代码 foreach (var item in daysOfWeeksList) { daysOper |= item; } daysOfWeeksList是一个列表。我想对列表中的每一项进行排序并处理结果 本周的清单是一份 List<int> daysOfWeeksList 您将如何使用作为列表集合的一部分提供的foreach方法来实现这一点?对于2个操作数,我

我有下面一段使用foreach迭代器的代码

foreach (var item in daysOfWeeksList)
            {
                daysOper |= item;
            }
daysOfWeeksList是一个列表。我想对列表中的每一项进行排序并处理结果

本周的清单是一份

List<int> daysOfWeeksList

您将如何使用作为列表集合的一部分提供的foreach方法来实现这一点?对于2个操作数,我有很多这样的例子,但对于单个操作数,我没有。

假设
daysOper
开始时为0,我根本不会使用
ForEach
——我会使用LINQ中的
Aggregate

var daysOper = daysOfWeekList.Aggregate((current, next) => current | next);

换句话说,保持一个正在运行的“当前”值,并每次保持或使用下一个值替换它。(一次迭代的结果将用作下一次迭代的“当前”值。)

一般来说,您希望在标准加积器不适合的情况下使用

(编辑:我假设OP在列表上执行OR操作。因此我编辑了下面的段落) 但是,如果DaysOfWeekList是一个列表,则有机会通过在第一个实例“true”处停止来优化性能。这个方法可以做到这一点

var result = daysOfWeekList.Any(daysOpr=>daysOpr);

定义每个扩展的含义
Linq
(顺便说一句,这不是foreach扩展)?我不知道你的意思。根据评论更新了问题。@ckv
foreach
不是扩展方法。它存在于类
System.Collections.Generic.List
@PLB:是的,我根据你的评论更新了我的问题。我想你假设
daysOfWeeksList
是一个
列表。我怀疑它实际上是一个
列表
或类似的东西。这个列表就是一个列表。换句话说,它是一个整数值列表。好的,那么您需要使用聚合方法。您还应该检查它的不同重载,并能够使用它计算总和、平均值、最大值和乘积。
var result = daysOfWeekList.Any(daysOpr=>daysOpr);