在增量原来foreach
循环不会影响数组的内容,要做到这一点的唯一方法仍然是一个for
循环:
for(int i = 0; i < intArray.Length; ++i)
{
if(intArray[i] > 3) ++intArray[i];
}
的LINQ不打算修改现有的集合或序列。它基于现有的创建新的序列。因此能够实现使用LINQ上面的代码,尽管它稍微是针对其用途:
var newArray1 = from i in intArray select ((i > 3) ? (i + 1) : (i));
var newArray2 = intArray.Select(i => (i > 3) ? (i + 1) : (i));
使用where
(或等同物),如图一些其他的答案,将排除任何值小于或等于从结果序列到3。
var intArray = new int[] { 10, 1, 20, 2 };
var newArray = from i in intArray where i > 3 select i + 1;
// newArray == { 11, 21 }
有阵列上,将允许您使用,而不是foreach
块lambda函数,但任何东西比一个方法调用更多的我会foreach
坚持一个ForEach
方法。
intArray.ForEach(i => DoSomething(i));