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]…
我有多个其他方法在整个程序中传递列表,但这是唯一一个给我这个问题的方法。同时,当我在这里输出它们时,它们是正确的。
如果你只是在结果上调用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);