我有int
的列表。如何汇总列表中的所有数字并获得结果?
List<int> FineListy = new List<int>();
答案 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。我建议分别命名变量totalsList
和fineList
。为简单起见,我将使用您当前的命名约定。
接下来,您执行的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();