在C#</int>中传递List <int>的问题

时间:2011-12-06 05:17:10

标签: c# list

我有以下方法来计算列表中的前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] ...

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

2 个答案:

答案 0 :(得分:9)

如果您只是在结果上调用Console.WriteLine(),那么只需在打印类型名称的对象上调用ToString()

如果要输出列表,则需要执行以下操作:

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

答案 1 :(得分:1)

如果你想要列表中的前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);