List.ForEach()中的'if'指令

Ste*_*nov 0 .net c# foreach list

我知道在SO的lambda语句中有很多关于"if"的问题.对不起,如果它是重复,但我真的找不到答案.

我有这个代码,它运作良好

    foreach (Pair<Myclass, int> A in myList) //mylist is List<Pair<Myclass, int>>
        if (A.second <= _width)
            verified.Add(A);
Run Code Online (Sandbox Code Playgroud)

是否有可能替换它myList.ForEach()

我试过了:

myList.ForEach(A => if (A.second < _width) verified.Add(A));
Run Code Online (Sandbox Code Playgroud)

myList.ForEach(A => f.second < _width ? verified.Add(A):do_nothing());
Run Code Online (Sandbox Code Playgroud)

但它不起作用.每次当我尝试添加'if'时,事情都会出错.

Ami*_*ich 7

使用Where代替:

var verified = myList.Where(item => item.second <= _width).ToList();
Run Code Online (Sandbox Code Playgroud)

  • @StepanLoginov将`using System.Linq`添加到文件的顶部,并导入Where方法(这就是扩展方法) (2认同)

Eni*_*ity 6

试试这个:

myList.ForEach(A => { if (A.second < _width) verified.Add(A); });
Run Code Online (Sandbox Code Playgroud)

除了单个语句之外,您还需要大括号.