如何以降序显示最高的3个数组元素?

时间:2014-01-25 08:55:39

标签: 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"};

我希望以desc顺序显示最高的3个数字,即“10,9,8”,但结果是“arrayname”,而不是“数组”。所以在富文本框中,我会看到

二六五。

那么,我该如何编码呢?​​

2 个答案:

答案 0 :(得分:6)

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);

答案 1 :(得分:2)

使用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);