C# 林:ForEach看起来像是不同的行为

C# 林:ForEach看起来像是不同的行为,c#,linq,C#,Linq,我在林克有问题 我有下节课: public class product { public int nserie {get; set;} public bool seleccionado {get; set;} } 我有一个产品列表,有一列带有输入复选框,该复选框将根据seleccionado和nserie列设置值 当我选中header check all中的按钮时,我正在执行以下循环: pedidos.ForEach(x => { if (x.NSerie == nserie)

我在林克有问题

我有下节课:

public class product {
  public int nserie {get; set;}
  public bool seleccionado {get; set;}
}
我有一个产品列表,有一列带有输入复选框,该复选框将根据seleccionado和nserie列设置值

当我选中header check all中的按钮时,我正在执行以下循环:

pedidos.ForEach(x => { if (x.NSerie == nserie) { x.seleccionado = true; } });
看起来它不工作,循环的行为很奇怪

怎么了

预计:

 public static int MarcarCheckBox(string nserie, bool valor) 
 {
    ...
    foreach (TarjetaActivar pedido in pedidos) 
    {
        if (nserie == "") pedido.seleccionado = true;
        else pedido.seleccionado = valor;
    }
    ...
 }

valor是一个布尔值。

您没有在linq foreach中执行else子句。试着这样做:

  pedidos.ForEach(x => { if (x.nserie == "") { x.seleccionado = true; } else {x.seleccionado = valor } });
简化:

pedidos.ForEach(p => p.seleccionado = (nserie == "" || valor))

什么是预期行为?什么是当前行为?请澄清什么“它不工作”和“行为奇怪”意味着在ForEach运算符中不使用valor。你为什么期望它会出现?您的实际代码和预期代码完全不同。条件是不同的,没有其他部分,没有valor。我在问题中添加了我在Linqi中想要的传统循环的预期代码。如果您想要实现foreach循环的功能,为什么要在foreach调用中添加完全不同的代码?