我试图删除List的最小值,main()函数调用removeSmallest()函数并写入返回列表,但我得到的只有:
“System.Collection.Generic.List`1 [System.Int32]”
Varibles解释: “n” - >计算foreach-lopp运行的频率,以便通过保存它们,在适当的时间在List中粘贴较早的值, “posa” - >在较右边的列表中保存较早值的位置以超过它们, “a” - >保存以前的数字,将其与下一个数字进行比较,
解释: “数字” - >是输入, “list” - >输出,
您可以找到我的代码here或[此处] [2]
THX for your Help !!
[2]:http://ideone.com/Y6lUSC ideone.com
答案 0 :(得分:2)
LINQ在这里可以派上用场,你可以使用这个想法:
var numbers = new []{22,31,14,25,26,67,8,49,101};
var numbersNoLowest = numbers.OrderByDescending(x => x).Take(numbers.Count() - 1).ToList();
foreach(var number in numbersNoLowest)
{
Console.WriteLine(number);
}
在此处运行:http://csharppad.com/gist/0d9d0f87b7c3bdf28a4681f4a8ada241
答案 1 :(得分:0)
好吧,只需Remove()
一个Min()
:
List<int> numbers = new List<int>() {
5, 3, 9, -2, 5, -2, 4 // please, notice that -2 appeared twice
};
// Just do this
numbers.Remove(numbers.Min());
// Let´s print out the test:
// 5, 3, 9, 5, 4
Console.Write(String.Join(", ", numbers));
答案 2 :(得分:0)
我不确定您的代码尝试做什么,但它不会删除最小值。如果要删除所有出现的最小值&amp;保留原始顺序中的剩余值(这是代码中部分发生的情况),以下内容应该有效:
int min = numbers.Min();
List<int> list = numbers.Where(val => val != min).ToList();