Issue passing a List<int> in C#

本文关键字:int in gt lt passing List Issue | 更新日期: 2023-09-27 18:16:48

我有以下方法来计算列表中的前20个数字并返回它们。

static public List<int> CalculateTop20(List<int> nums)
{
    List<int> Returned = new List<int>();
    int count = nums.Count;
    for (int j = 0; j < 20; j++)
    {
        var most = (from i in nums
                    group i by i into grp
                    orderby grp.Count() descending
                    select grp.Key).First();
        Returned.Add(most);
        nums.RemoveAll(item => item == most);
    }
    return Returned;
}

除了当我将它们返回到main并尝试将它们输出到控制台时,它们只是出现为:System.Collections.Generic.List'1[System.Int32]…

我有多个其他方法在整个程序中传递列表,但这是唯一一个给我这个问题的方法。同时,当我在这里输出它们时,它们是正确的。

Issue passing a List<int> in C#

如果你只是在结果上调用Console.WriteLine(),这就是你所得到的,它只是在打印类型名称的对象上调用ToString()

如果你想输出这个列表,你需要这样做:

foreach(var i in list) {
    Console.WriteLine(i);
}

如果你想要列表中的前20个项目,为什么不使用LINQ呢?

// A sample list with 100 integers
var list = new List<int>();
for (var i = 0; i < 100; i++)
{
    list.Add(i);
}
// Get the top 20
var top20 = list.OrderByDescending(x => x).Take(20);
编辑:

// Get the top 20 distinct values
var top20 = list.Distinct().OrderByDescending(x => x).Take(20);