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个元素的索引。
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()