首页 > 解决方案 > 是否有任何内置函数可以在 C# 中查找双数组的总和?

问题描述

我想在数组中找到最大数。double[]我还想要一个数组所有元素的总和double[]。C#是否为C#中的数组提供了这样的基本功能?double[]

double[] array = new double[2] {1, 2}

double max = ? // should be 2
double sum = ? // should be 3

标签: c#arrays

解决方案


通常,我们为此使用Linq (查询):

 using System.Linq;

 ... 

 double[] array = ...

 ...

 double max = array.Max();
 double sum = array.Sum();

您可能遇到的唯一困难是在为Max 抛出异常。在这种情况下,您可以检查(或):arrayAnyarray.Length > 0

 double max = array.Any()     // or even array.Length > 0
   ? array.Max()              // array has items, business as usual
   : double.NegativeInfinity; // empty array, some default value

 double sum = array.Sum();    // 0.0 if array is empty

如果你有多维数组,你必须变成1D; 您可以在以下帮助下做到这一点Cast

 double[,] array = new double[,] {
   {1, 2},
   {3, 4},
 };

 double sum = array.Cast<double>().Sum();
 double max = array.Cast<double>().Max(); 

如果是锯齿状数组以使其变平,请添加SelectMany

 double[][] array = new double[][] {
   new double[] {1, 2, 3},
   new double[] {4, 5}, 
 };

 double sum = array.SelectMany(line => line).Sum();
 double max = array.SelectMany(line => line).Max();

推荐阅读