C# 寻找最大问题
我有这样一份清单。让我们将列表中的每个二维数组称为层。所以我应该比较每一层中的每个元素,提取最大值,并构建最大值的层 我该怎么做?也许使用LINQ?还是foreach循环构造 救命啊 谢谢C# 寻找最大问题,c#,linq,multidimensional-array,foreach,max,C#,Linq,Multidimensional Array,Foreach,Max,我有这样一份清单。让我们将列表中的每个二维数组称为层。所以我应该比较每一层中的每个元素,提取最大值,并构建最大值的层 我该怎么做?也许使用LINQ?还是foreach循环构造 救命啊 谢谢 var x = new double[,] { { 1, 2 }, { 3, 4 } }; var y = new double[,] { { 5, 6 }, { 7, 8 } }; var list = new List<double[,]> { x, y }; var maxValues =
var x = new double[,] { { 1, 2 }, { 3, 4 } };
var y = new double[,] { { 5, 6 }, { 7, 8 } };
var list = new List<double[,]> { x, y };
var maxValues = list
.Select(arg => arg.Cast<double>().Max())
.ToList();
据我所知,x和y是能级。
结果将是4和8,它们在级别x和y上分别为最大值
[编辑]
好像我误解了这个问题。
要查找max的级别,可以使用以下代码:
var maxLevel = list
.Select(arg => new { Max = arg.Cast<double>().Max(), Level = arg })
.OrderByDescending(arg => arg.Max)
.Select(arg => arg.Level)
.First();
据我所知,x和y是能级。
结果将是4和8,它们在级别x和y上分别为最大值
[编辑]
好像我误解了这个问题。
要查找max的级别,可以使用以下代码:
var maxLevel = list
.Select(arg => new { Max = arg.Cast<double>().Max(), Level = arg })
.OrderByDescending(arg => arg.Max)
.Select(arg => arg.Level)
.First();
假设所有层的大小都相同,否则这没有意义:
var maxLayer = new Double[sizeX,sizeY];
for( int x = 0; x <= maxLayer.GetUpperBound(0); x++ )
for( int y = 0; y <= maxLayer.GetUpperBound(1); y++ )
maxLayer[x,y] = Double.NegativeInfinity;
foreach( Double[,] layer in list )
for( int x = 0; x <= maxLayer.GetUpperBound(0); x++ )
for( int y = 0; y <= maxLayer.GetUpperBound(1); y++ )
maxLayer[x,y] = Math.Max( maxLayer[x,y], layer[x,y] );
这里没有什么聪明的地方。假设您的所有层都是相同大小的SizeXsizey,否则这就没有意义了:
var maxLayer = new Double[sizeX,sizeY];
for( int x = 0; x <= maxLayer.GetUpperBound(0); x++ )
for( int y = 0; y <= maxLayer.GetUpperBound(1); y++ )
maxLayer[x,y] = Double.NegativeInfinity;
foreach( Double[,] layer in list )
for( int x = 0; x <= maxLayer.GetUpperBound(0); x++ )
for( int y = 0; y <= maxLayer.GetUpperBound(1); y++ )
maxLayer[x,y] = Math.Max( maxLayer[x,y], layer[x,y] );
这里没什么高明之处。你能再进一步澄清一下吗?您希望如何比较每个层中的元素?是否要在每层中最大化它们?结果如何映射到图层?这不是一个列表吗?如果用double[][]而不是double[,]可能是值得的,因为这样你就可以使用所有只适用于1D数组的语句。你能进一步澄清一下吗?您希望如何比较每个层中的元素?是否要在每层中最大化它们?结果如何映射到图层?这不是一个列表吗?如果用double[][]而不是double[,]是值得的,因为这样你就可以使用所有只适用于1D数组的语句。不,我需要新的double[,],它将包含{{{{5,6}{7,8}}@helicera-你试过我答案中的第二个查询了吗?这是你要找的东西吗?不,我需要新的Double[,],它将包含{{5,6}{7,8}}@helicera-你试过我回答的第二个问题了吗?是你在找的东西吗?