我有以下方法来计算列表中的前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] ...
我有多个其他方法在整个程序中传递列表,但这是唯一一个给我这个问题的方法。此外,当我在计算它们的同时将它们输出时,数字是正确的。
答案 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);