c# - 如何从List中获取值的总和?

use*_*094 21 c# asp.net

我想从列表中获取值的总和.

例如:我在列表中有4个值1 2 3 4我想对这些值求和并在Label中显示它

码:

protected void btnCalculate_Click(object sender, EventArgs e)
{
    string monday;
    TextBox txtMonTot;
    List<string> monTotal = new List<string>();

    if (Application["mondayValues"] != null)
    {
        List<string> monValues = Application["mondayValues"] as List<string>;
        for (int i = 0; i <= gridActivity.Rows.Count - 1; i++)
        {
            GridViewRow row = gridActivity.Rows[i];
            txtMonTot = (TextBox)row.FindControl("txtMon");
            monday = monValues[i];
            monTotal.Add(monday);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?提前致谢

Roy*_*tus 53

您可以使用该Sum函数,但您必须将字符串转换为整数,如下所示:

int total = monValues.Sum(x => Convert.ToInt32(x));
Run Code Online (Sandbox Code Playgroud)

  • 为了澄清,@ Sayse没有错,语法有效.问题是Sum有两个重载,一个接受一个返回小数的func,另一个接受一个返回Nullable <decimal>的func.使用方法组语法,它无法分辨Convert.ToDecimal匹配哪个重载.lambda语法解决了在另一个始终返回小数的方法中包装Convert.ToDecimal的问题. (5认同)
  • 你可能不需要lambda`Sum(Convert.ToInt32)` (3认同)
  • 如果必须对它们进行求和,那么为什么首先要列出字符串列表? (2认同)
  • 确保添加“using System.Linq;”。 (2认同)

DGi*_*bbs 12

使用Sum()

 List<string> foo = new List<string>();
 foo.Add("1");
 foo.Add("2");
 foo.Add("3");
 foo.Add("4");

 Console.Write(foo.Sum(x => Convert.ToInt32(x)));
Run Code Online (Sandbox Code Playgroud)

打印:

10


mak*_*kim 6

您可以使用LINQ

var list = new List<int>();
var sum = list.Sum();
Run Code Online (Sandbox Code Playgroud)

而像Roy Dictus这样的字符串列表说你必须转换

list.Sum(str => Convert.ToInt32(str));
Run Code Online (Sandbox Code Playgroud)