【发布时间】:2013-08-25 18:33:49
【问题描述】:
我有这个 for 循环,它在列表中搜索特定值并用新值替换它们。
for (int i = 0; i < Data.Count; i++) {
if (Data[i] > 0 && Data[i] <= 10) {Data[i] = 1;}
else if (Data[i] > 10 && Data[i] < 20) {Data[i] = 2;}
...
}
我一直在尝试用 linq 编写这个函数,我知道它可以这样写:
var Data2 = Data.Where(x=> x > 0 && x <= 10).Select(y=> y=1).ToList();
我的问题是,有什么方法可以将此 for 循环转换为 linq 形式而无需声明新列表?我的意思是一个 linq 表单,它在列表中搜索这些值,当它找到它们时,它会相应地替换它们。
【问题讨论】:
-
为什么要用Linq重写?
-
我想使用Linq的原因只是代码清晰,实际上我想在数据挖掘中使用它,我有大量需要处理的嘈杂数据。我也很好奇 linq 解决方案
-
就地修改数据并不是 Linq 的强项。 Linq 方法通常没有副作用。这就是为什么 .ForEach() 方法不是 Linq 方法并且只为列表定义的原因。
标签: linq