1

我有这个 linq foreach

        public Func<List<string>, Foobar, List<string>> ExtractClassName = (lines, foo)
        =>
        {
            temp = lines.FindAll(_FooRege.IsMatch);
            temp.ForEach(t => { lines.Remove(t); });

            lines.ForEach(
                lin =>
                {
                    if (foo.FooRege.IsMatch(lin))
                    {
                        docsText.AppendLine(TrimSlashes(lin));
                        lines.Remove(lin);
                    }
                    else if(_FooRege.IsMatch(lin))
                    {
                        _foo.ClassName = lin.Split(' ').Last();
                        lines.Remove(lin);
                    }
                });
            return lines;
        };

测试数据

/// <summary>
/// Summary <- skips this one
/// </summary>

如果一切正常,他在第一场比赛中击中第一场比赛后,但如果跳过一行,则在第一场比赛中击中第二场。不知道为什么会这样。

4

1 回答 1

6

永远不要修改您当前正在迭代的集合。首先创建集合的副本,在您的情况下,以下小的更改将完成:

foo.ToList().ForEach(...
于 2013-05-28T09:41:41.830 回答