c# - 是否有任何内置函数可以在 C# 中查找双数组的总和?
问题描述
我想在数组中找到最大数。double[]
我还想要一个数组所有元素的总和double[]
。C#是否为C#中的数组提供了这样的基本功能?double[]
double[] array = new double[2] {1, 2}
double max = ? // should be 2
double sum = ? // should be 3
解决方案
通常,我们为此使用Linq (查询):
using System.Linq;
...
double[] array = ...
...
double max = array.Max();
double sum = array.Sum();
您可能遇到的唯一困难是在为空时Max
抛出异常。在这种情况下,您可以检查(或):array
Any
array.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();
推荐阅读
- javascript - 从对象中获取一个值并使用该值在某个条件下填充同一对象中的其他键
- awk - 将 json 文件中的 HTTP 请求重新格式化为 raw
- javascript - 表单中的提交按钮在第二次单击后起作用。反应JS
- python - pandas 通过布尔系列过滤
- amazon-web-services - 限制预定义的 CloudWatch 指标命名空间访问
- amazon-web-services - Jenkins 部署到 EKS 的 Elasticsearch 服务突然未能通过健康检查
- javascript - 如何更新 reactjs 应用程序中的 web3 提供程序?
- android - Android 如何为整个系统切换 DarkMode(UiMode)?
- windows - Windows 上的 Emacs shell:“/c:找不到命令”
- python - Arduino 没有对树莓派串行通信做出反应