C#从列表中获取最小值和最大值

时间:2016-07-27 16:27:02

标签: c# list

我需要查看列表并找到最大和最小值。根据用户在表单文本框中输入信息的输入填充列表。然后每次我点击按钮在我的表单中计算它运行代码进行计算并将小数放入listProfit。 我已经遍布整个地方并尝试使用.Sort(),但这会导致系统错误。

这是我得到的错误。

  

类型'System.InvalidOperationException'的未处理异常   发生在mscorlib.dll附加信息:收集是   改性;枚举操作可能无法执行。

错误突出显示了我的foreach循环中的“in”。

//list of each order total
List<decimal> listProfit = new List<decimal>(); 

    foreach(int item in listProfit)
                    {
                        listProfit.Sort();
                        decimal smallest = listProfit[0];
                        decimal largest = listProfit[listProfit.Count - 1];
                        SmallTxt.Text = smallest.ToString("c");
                        LargestTxt.Text = largest.ToString("c");
                    }

5 个答案:

答案 0 :(得分:6)

使用System.Linq中的MinMax

var min = listProfit.Min();
var max = listProfit.Max();

答案 1 :(得分:4)

你根本不需要迭代。如果你想继续对列表进行排序,你可以这样说。否则,尝试使用Min()Max() LINQ扩展方法直接获取

  listProfit.Sort();
  decimal smallest = listProfit[0];
  decimal largest = listProfit[listProfit.Count - 1];

答案 2 :(得分:2)

要获得最小值,请使用

SmallTxt.text = listProfit.Min().ToString("c");

获得最大值

LargestTxt.Text = listProfit.Max().ToString("c");

无需对列表进行排序,但请注意,这两个操作都会枚举整个列表。

答案 3 :(得分:0)

基于你的问题,我假设你是初学者。考虑KISS并考虑如何在没有LINQ的情况下执行此操作。

<C-O>

如果您事先对列表进行排序,@ Rahul的回答是可行的方法。

答案 4 :(得分:-2)

请参阅Input form

 List<decimal> lstProfit = new List<decimal>();
    private void button1_Click(object sender, EventArgs e)
    {
        lstProfit.Add(Convert.ToDecimal(textBox1.Text));

        textBox2.Text = lstProfit.Min().ToString();
        textBox3.Text = lstProfit.Max().ToString();
    }

请参阅input/output form

explanation