2

我有以下使用 foreach 迭代器的代码。

foreach (var item in daysOfWeeksList)
            {
                daysOper |= item;
            }

daysOfWeeksList 是一个列表。我想对列表中的每个项目进行 OR 并处理结果?

这 daysOfWeeksList 是一个

List<int> daysOfWeeksList

说我想做这样的事情。我想做的事情是 OR 操作。

list.ForEach( item =>
{
    item.DoSomething();
} );

您将如何使用作为 List 集合的一部分提供的 foreach 方法来解决此问题?对于 2 个操作数,我有很多示例,但对于单个操作数没有。

4

2 回答 2

11

假设daysOper从 0 开始,我根本不会使用ForEach- 我会Aggregate从 LINQ 使用:

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

换句话说,保持一个正在运行的“当前”值,并且每次都将它与下一个值进行 OR-ing。(一次迭代的结果将用作下一次迭代的“当前”值。)

于 2013-07-28T07:49:45.123 回答
3

通常,您希望将Aggregate 方法用于此类标准聚合器(如Sum不适合)的情况。

(编辑:我假设 OP 正在对列表执行 OR 操作。所以我编辑了下面的段落) 但是,如果 DaysOfWeekList 是一个列表,那么就有机会通过在“true”的第一个实例处停止来优化性能。Any方法执行此操作。

var result = daysOfWeekList.Any(daysOpr=>daysOpr);
于 2013-07-28T07:51:04.030 回答