【发布时间】:2015-02-16 13:34:12
【问题描述】:
这里有什么问题?如何正确过滤掉负面元素?
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);
}
}
【问题讨论】:
-
您告诉我们 - 这里有什么问题? (是的,我们可以在这种情况下进行猜测,但请详细说明您的问题是什么、您想要实现的目标以及您使用的方法不起作用的原因)
-
Sum 中的 lambda 是选择器,而不是过滤器。
-
没有明确的问题。
-
您至少需要指定程序的期望结果是什么......
-
您可以随时选择您想要求和的内容:
var negatives=array.Where(i => i < 0); int sum=negatives.Sum();。由于Where的延迟执行不会“花费”更多。但它增加了可读性、可测试性和可维护性。