我需要修改List<int> 索引.我有另一个索引List<int>
List<int> values;
List<int> indexes;
indexes.Select(i=>values[i]).ForEach(val=>val = 0);
Run Code Online (Sandbox Code Playgroud)
当然,我知道上面的语法不会起作用.但是,我知道需要修改的项目的索引,我想用lambda修改索引列表.有可能吗?
在某些情况下,LINQ不会为您提供特别好的解决方案,尤其是在处理索引或修改数据时.我认为以下简单foreach循环可能是最易读的方式:
foreach(var i in indexes) values[i] = 0;
Run Code Online (Sandbox Code Playgroud)
但是,如果集合indexes是类型,List<T>那么您可以使用该ForEach方法(请参阅MSDN).这使得代码变得更短,但是它是否比简单foreach循环更具可读性是一个问题:
indexes.ForEach(i => values[i] = 0);
Run Code Online (Sandbox Code Playgroud)
ForEachLINQ目前不提供方法(一般情况下IEnumerable<T>),但有不少人要求它.但正如我所说,目前尚不清楚它是否使代码更具可读性.
(如果你想写同样的东西,IEnumerable<T>你必须使用ToList或编写自己的ForEach扩展方法).
| 归档时间: |
|
| 查看次数: |
7179 次 |
| 最近记录: |