C# 如何按降序显示最高的3个数组元素?
如果我有两个10的数组C# 如何按降序显示最高的3个数组元素?,c#,arrays,visual-studio-2010,sorting,C#,Arrays,Visual Studio 2010,Sorting,如果我有两个10的数组 int [] array = {2,10,3,4,8,9,7,5,6,1}; string [] arrayname = {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"}; 我想显示最高的3个数字,按desc顺序是10,9,8,但结果是arrayname,而不是array。在rich文本框中,我会看到 二六五 那么,我该如何编码呢?另一个使用Z
int [] array = {2,10,3,4,8,9,7,5,6,1};
string [] arrayname = {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"};
我想显示最高的3个数字,按desc顺序是10,9,8,但结果是arrayname,而不是array。在rich文本框中,我会看到
二六五
那么,我该如何编码呢?另一个使用Zip的解决方案
var result = arrayname.Select((m, index) => new
{
key = array[index],
value = m
})
.OrderByDescending(m => m.key)
.Select(m => m.value)
.Take(3);
var textBoxValue = string.Join(" ", result);
可能这里也有问题,因为我得到了2,6,five@Steve期望的结果是什么?所以在rich文本框中,我将看到二六五。或者你的意思是我应该去掉逗号?不,现在真的很困惑。你正在打印arrayname中三个最高数字的索引,这可能是对的,但这意味着什么?我想显示最高的3个数字,按描述顺序是10、9、8?@Steve嗯,如果你读了整个短语,就相当清楚了,不是吗?从数组中按降序取最高的3个数字,并在arrayname中显示相应的元素…嘿!感谢您的回答,但由于我不太了解zip,就像它所做的一样,imma使用另一个ans:@MarcellaTay:zip运算符使用指定的选择器函数合并两个序列的相应元素。如果您想了解更多有关此的信息,请检查此链接
int[] array = { 2, 10, 3, 4, 8, 9, 7, 5, 6, 1 };
string[] arrayname = { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten" };
var dictionary = array.Zip(arrayname, (k, v) => new { Key = k, Value = v })
.ToDictionary(x => x.Key, x => x.Value);
var result=dictionary.OrderByDescending(m => m.Key)
.Select(m => m.Value)
.Take(3);
var textBoxValue = string.Join(" ", result);