我需要查看列表并找到最大和最小值。根据用户在表单文本框中输入信息的输入填充列表。然后每次我点击按钮在我的表单中计算它运行代码进行计算并将小数放入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");
}
答案 0 :(得分:6)
使用System.Linq中的Min
和Max
:
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)
答案 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();
}