如何将列表框中的所有值相加

本文关键字:列表 | 更新日期: 2023-09-27 18:00:48

我有一个列表框,其中包含未指定数量的值。它们都将是一个十进制转换为字符串,例如

21.10
32.50
43.49
42.00

然后我想把这些都加起来,并在文本框中显示,我该怎么做?

我的猜测是,我首先需要将它们从ListItem全部转换回十进制,因为无论有多少次都有一个项。我不知道该怎么做,尽管

这是我尝试的(来自这里的旧帖子)

decimal total = (from string S in Listbox.Items select Convert.ToDecimal(S)).Sum();

收到此错误:

无法将"System.Web.UI.WebControls.ListItem"类型的对象强制转换为键入"System.String".

谢谢!

如何将列表框中的所有值相加

您的代码被窃听。

更正:

decimal total = (from item in listbox.Items.Cast<ListItem>() select Convert.ToDecimal(item.Value)).Sum();

简单:

var s = lb.Items.Cast<ListItem>().Sum<ListItem>(p=>Convert.ToDecimal(p.Value));
var sum = 0;
foreach(var item in listBox.Items)
{
   sum + = convert.ToDecimal(item.ToString());
}
  double sum=0; //var to store the sum of items
    foreach (string s in listBox1.Items)
    {
       sum=sum+double.Parse(s); // in each iteration we parse the string value of listbox to double and add it to current sum
    }

创建文本框txtAddNumbers、列表框lstNumbers、按钮btnAdd、标签lblSum

按钮代码btnAdd点击-

private void btnAdd_Click(object sender, EventArgs e)
    {
        lstNumbers.Items.Add(txtAddNumbers.Text);
        txtAddNumbers.Clear();

        int iList = 0, result = 0;
        while (iList < lstNumbers.Items.Count)
        {
            result += Convert.ToInt32(lstNumbers.Items[iList++]);
        }
        lblSum.Text = "Sum : " + Convert.ToString((double)result);   
        //you can also calculate Average
        lblMean.Text = "Mean : " + Convert.ToString((double)result / iList);
    }