如何计算List <list <string>&gt;中项目的总和使用C#

时间:2015-07-16 17:53:42

标签: c#

我有一个List<List<string>>。这些列表中的每个项目,将用于显示报告的列。 我需要计算报告中每个列的总和(在将字符串转换为十进制之后),并将其显示为页脚。 不确定,每个列表中的项目数量是否与其他列表匹配。

这意味着,应该转换每个列表项并将其汇总并添加到另一个列表中,该列表将用于显示为页脚行。

请建议我,在性能方面更好地使用哪种方法来实现这一目标。

 List<List<string>> test = new List<List<string>>();
 List<string> columnTotal = new List<string>();
 decimal total = 0;
 foreach (var item in test) 
{ 
//Get first element 
// decimal dec = Convert.ToDecimal(first element); 
// total =total +dec ; .... 
//Once first element in all the list has been added, 
//columnTotal .add(convert.tostring(total)); 
//Now get the second element ...so on 
}

这是我的实际要求。

1 个答案:

答案 0 :(得分:0)

试一试。我假设您正在使用2D表而不是锯齿状表。

// Assuming a 2D table and not jagged
List<List<string>> table = new List<List<string>>
{
    new List<string> { "1", "2", "3" },              
    new List<string> { "1", "2", "3" },
    new List<string> { "1", "2", "3" },
    new List<string> { "2", "3", "4" }
};

List<decimal> footerTotals = new List<decimal>();

for (int i = 0; i < table[0].Count; i++)
{
    // Sum the columns
    footerTotals.Add(table.Sum(t => decimal.Parse(t[i])));
}

table.ForEach(row => Console.WriteLine(String.Join("\t", row)));
Console.WriteLine(String.Join("\t", footerTotals));

结果:

1       2       3
1       2       3
1       2       3
2       3       4
5       9       13