我有像
这样的数据1 3 9 2 7 8 9
120 70 76 190 300 50 40
如何根据第二行对数组进行排序,并从第一行返回最大数字的值。我的意思是,输出变为>
7 2 1 9 3 8 9
300 190 120 76 70 50 40
我得到7
作为输出。
答案 0 :(得分:1)
首先,我会将您的数据从矩形数组中提取出来,使其更有用。为此,首先将数据转换为List<Tuple<int, int>>
,因为它更容易使用。
int[,] rawData = { { 1, 3, 9, 2, 7, 8, 9 }, { 120, 70, 76, 190, 300, 50, 40 } };
var data = new List<Tuple<int, int>>();
for(int i = 0; i < rawData.GetLength(1); i++)
{
data.Add(new Tuple<int, int>(rawData[0, i], rawData[1, i]));
}
然后只需使用Linq查询来获取所需的数据。
var result = data.OrderByDescending(x => x.Item2).First().Item1;
答案 1 :(得分:0)
如果您想知道最新数字现在&#39;的答案是什么? (或换句话说,保持顺序而不是在处理后对其进行排序 - 注意它有性能损失!)然后SortedList
可能派上用场:
int[] a = { 1, 3, 9, 2, 7, 8, 9 };
int[] b = { 120, 70, 76, 190, 300, 50, 40 };
var sortedList = new SortedList<int,int>();
for (int i = 0; i < a.Length; i++)
{
sortedList[b[i]] = a[i];
}
Console.WriteLine(sortedList.Last().Value);
(如果您希望在添加数据时查看当前最大值,只需将WriteLine
移至循环内部