使用linq选择和更改超过/低于某个阈值的值C#

xdyibdwo  于 2022-12-06  发布在  C#
关注(0)|答案(1)|浏览(122)

如标题所示,是否可以将数组中所有大于250的值赋值为250,所有小于0的值赋值为0?我尝试使用简单的if语句,但由于我有一个foreach循环,因此无法赋值迭代变量。

int[] rgbArray = { 10, 260, -10};
 foreach (int i in rgbArray)
    {
        if (i < 0)
        {
            //do something
        }
        else if (i > 250)
        {
            //do something
        }
nfs0ujit

nfs0ujit1#

一个for循环将完成这项工作,只需使用迭代器作为数组索引。
示例:

int[] rgbArray = { 10, 260, -10 };
for (var i = 0; i < rgbArray.Length; i++)
{
    if (rgbArray[i] < 0)
    {
        rgbArray[i] = 0;
    }
    else if (i > 250)
    {
        rgbArray[i] = 250;
    }
}

如果是用LINQ来完成的话,应该是这样的,我认为前一个例子更容易阅读。

rgbArray = rgbArray.Select(x => x < 0 ? 0 : x > 250 ? 250 : x).ToArray();

相关问题