这里有什么问题?如何正确过滤负面元素?
class Program
{
static void Main(string[] args)
{
int[] array = { 1, 2, -3, 4, 5, -1, 4, -2 };
double sumOfElem = array.Sum(element => element < 0);
Console.WriteLine(sumOfElem);
}
}
答案 0 :(得分:12)
我认为你需要这个:
double sumOfElem = array.Sum(element => (element < 0 ? 0 : element));
这样你就可以使用Sum
的重载,它使用一个转换函数(所谓的 selector ),它应用于数组的每个元素。
以上过滤掉否定元素。如果要过滤掉正,那么只需反转比较运算符:
double sumOfElem = array.Sum(element => (element > 0 ? 0 : element));
答案 1 :(得分:6)
你可以尝试这个:
int sumOfElem = array.Where(element => element < 0)
.Sum();
您无法在Sum
内过滤您的值。您应首先过滤这些值,然后对它们求和。
<强>更新强>
说您无法在 Sum
中过滤您的值,我的意思是您无法在Sum
方法中传递谓词。