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调用中添加完全不同的代码?