C# 如何对列表框中的所有数字求和

C# 如何对列表框中的所有数字求和,c#,listbox,C#,Listbox,我想对列表框中的所有数字求和,这些数字来自数据库 日期类型是money,每次单击按钮时,我都希望在列表框中显示数字的总和 我使用的代码是: decimal sum = 0; private void but_TotalSale_Click(object sender, EventArgs e) { for (int i = 0; i < lst_Price.Items.Count; i++) {

我想对列表框中的所有数字求和,这些数字来自数据库 日期类型是money,每次单击按钮时,我都希望在列表框中显示数字的总和

我使用的代码是:

decimal sum = 0;

private void but_TotalSale_Click(object sender, EventArgs e)
        {

            for (int i = 0; i < lst_Price.Items.Count; i++)
            {
                sum += Convert.ToDecimal(lst_Price.Items[i].ToString());
            }

            textBox1.Text = Convert.ToString(sum);
        }
我得到了这个错误

mscorlib.dll中发生类型为“System.FormatException”的未处理异常

其他信息:输入字符串的格式不正确

怎么做?以及如何修复错误


listbox

我认为问题在于您正在将listitem转换为一个字符串,而不是使用列表项中的值

试试这个:

decimal sum = 0; 
private void but_TotalSale_Click(object sender, EventArgs e) { 
for (int i = 0; i < lst_Price.Items.Count; i++) { 
     sum += Convert.ToDecimal(lst_Price.Items[i].Text);
  } 
textBox1.Text = Convert.ToString(sum); 
}

为什么要首先转换为字符串

lst_Price.Items[i]是一个对象,Convert.ToDecimal有一个可以获取对象的重载

我也能做到

  for (int i = 0; i < listBox1.Items.Count; i++)
            {
                sum += Convert.ToDecimal(lst_Price.Items[i]);
            }
或者和林克在一条线上

sum = lst_Price.Items.OfType<object>().Sum(x => Convert.ToDecimal(x));

你的代码是正确的。在列表框中是否有任何文本

那么,在错误之后,输入字符串是什么?抛出错误时,lst_Price.Items[i].ToString的值是多少?假设这是抛出错误的那条线。。。是吗?在for循环内的行上放置一个断点,然后检查lst_Price.Items[i]。时间都是数字。如果您确定得到的项目都是数字,为什么需要从中创建一个字符串以再次将其解析为数字?@MaxSaeed:拍摄用户界面的照片与调试不同。lst_Price.Items[i].ToString的实际运行时值是多少?我尝试过,但没有成功,我尝试删除.text和.ToString,但仍然有错误。ToString会抛出错误和文本。代码中不接受文本