将计算的列表总和添加到另一个列表

时间:2018-03-29 15:07:04

标签: c# list

我有int的列表。如何汇总列表中的所有数字并获得结果?

List<int> FineListy = new List<int>();

3 个答案:

答案 0 :(得分:2)

您的代码存在许多问题。

List<int> FineListy = new List<int>();
for (int i = 0; i < fineList.Count(); i++)
{
    if (fineList[i] > 0)
    {
        FineListy.Add((fineList[i] += fineList[i]));              
    }
}

首先:C#命名约定是局部变量应该以小写字母开头并且是camelCased。我建议分别命名变量totalsListfineList。为简单起见,我将使用您当前的命名约定。

接下来,您执行的FineListy.Add(fineList[i] += fineList[i]);与以下内容相同:

fineList[i] = fineList[i] * 2;
FineListy.Add(fineList[i]);

你在循环中进行,所以你只需要获得所有项目的列表乘以2.

现在你可以解决这个问题:

int total = 0;
for (int i = 0; i < fineList.Count; ++i)
{
    if (fineList[i] > 0)
    {
        total += fineList[i];
    }
}
FineListy.Add(total);

但你可以使用LINQ在一行中做同样的事情(我将它分成多行以便于阅读):

var total = fineList
                .Where(v => v > 0)
                .Sum();
FineListy.Add(total);

或者简单地说:

FineListy.Add(fineList.Where(v => v > 0).Sum());

答案 1 :(得分:1)

如果您有int列表,为什么不使用sum函数??

int sum = FineListy.Sum();

这将添加所有数字并给出预期结果。现在我看到你做If检查以查看数字是否不是0.所以,然后创建一个新列表并将数字传递给该列表仅在其大于0

时才会出现
List<int> NewList = new List<int>;

foreach (var number in IntegerList)
{
    if (number > 0)
    {
        NewList.Add(number);
    }
}

最后得到总和:

 int sum = NewList.Sum();

或单线LINQ解决方案:

 var result = fineList.Where(a => a > 0).Sum();
 NewList.Add(result );

答案 2 :(得分:-1)

是的,它加倍,因为这就是你在这里所做的:

FineListy.Add((fineList[i] += fineList[i])); 

您说:“将fineList[i] + fineList[i]添加到我生成的收藏集FineListy” 所以你把所有元素都加倍了。

如果你想添加值,你不需要列出一个变量来存储它和LINQ .Sum()方法

P.S。 我的意思是这两个中的任何一个(正如其他人所建议的那样):

FineListy.Add(fineList.Sum());

或者

int sum = fineList.Sum();