You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用LINQ为整数列表中每个元素加1?现有代码失效

嘿,这个问题我碰到过!你之所以用ForEach不行,主要有两个关键原因:

  1. List(Of Integer).ForEach()方法的返回值是空(Void),它只是用来遍历集合执行指定操作,不会返回新集合,所以你没法直接把它赋值给m.Pages。
  2. 而且Integer是值类型,就算你在ForEach的逻辑里写x +=1,修改的也只是元素的临时副本,原集合里的元素根本不会有变化。

那用LINQ怎么实现需求呢?其实很简单,用Select方法生成新集合就好:

m.Pages = insertedPageList.Select(Function(x) x + 1).ToList()

简单拆解下这个写法:

  • Select会遍历insertedPageList里的每一个元素,对每个元素执行x + 1的操作,返回一个包含所有新元素的IEnumerable(Of Integer)。
  • 最后用ToList()把这个可枚举序列转换成List(Of Integer),这样就能直接赋值给m.Pages了。

这里要注意:这种方式是生成一个全新的集合,不会修改原来的insertedPageList。如果你本来就不需要保留原集合的旧值,这个方法完全符合LINQ“查询而非修改”的设计理念,比For循环更简洁。

要是你确实需要修改原集合里的元素,那还是用你原来的For循环最靠谱——因为值类型的特性,LINQ本身并不适合直接修改原集合的元素,强行用的话反而会绕弯路。

内容的提问来源于stack exchange,提问作者user1753377

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:09:36