如何使用条件和linq c#

时间:2015-02-16 13:34:13

标签: c# linq

这里有什么问题?如何正确过滤负面元素?

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);
    }
}

2 个答案:

答案 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方法中传递谓词。