C#linq过滤int数组

本文关键字:数组 int 过滤 C#linq | 更新日期: 2023-09-27 17:59:01

给定一个int数组:

int[] testInt = new int[] { 2, 3, 1, 0, 0 };

如何返回一个int数组,其中每个元素都符合一个标准?

为了返回所有元素都大于零,我尝试了

int[] temp = testInt.Where(i => testInt[i] > 0).ToArray();

但这仅返回具有CCD_ 1的4个元素的索引。

C#linq过滤int数组

i是数组元素:

int[] temp = testInt.Where(i => i > 0).ToArray();

Where接受一个函数(Func<int, bool>),然后Where遍历数组的每个元素,并检查条件是否为真并生成该元素。写入i =>时,i是数组中的元素。就像你写的:

foreach(var i in  temp)
{
   if( i > 0)
      // take that i
}

您在lambda表达式上传递的元素(示例中的i),它是集合中的元素,在本例中是int值。样品:

int[] temp = testInt.Where(i => i > 0).ToArray();

您还可以通过索引传递lambda表达式,该表达式获取元素的索引。这不是一个好的实践,使用作用域上已有的元素是最佳选择,但对于其他示例,您可以使用索引。样品:

int[] temp = testInt.Where((item, index) => testInt[index] > 0).ToArray();
int[] temp = testInt.Where(p=>p>0).ToArray()