C#垂直计算List <int>值中的项</int>

时间:2010-06-16 09:40:46

标签: c#

我有一个int值列表,如下所示(上限和下限是动态的)

1, 2, 3
4, 6, 0
5, 7, 1

我想以垂直方式计算列值,如

1 + 4 + 5 = 10
2 + 6 + 7 = 15
3 + 0 + 1 = 4

预期结果= 10,15,4

任何帮助将不胜感激

由于

迪普

4 个答案:

答案 0 :(得分:2)

如果您使用2D数组,则可以将每行的第一列,第二列相加。

如果使用1D阵列,则只需使用模数:

int[] results = new results[colCount];
for(int i=0, i<list.Count; list++)
{
  results[i%colCount] += list[i];
}

答案 1 :(得分:2)

这是使用数组文字的输入数据,但后续代码在数组或列表上的工作方式完全相同。

var grid = new []
           {
               new [] {1, 2, 3},
               new [] {4, 6, 0},
               new [] {5, 7, 1},
           };

现在生成一个序列,每列有一个项目(取最短行中的元素数量),其中项目的值是行[column]值的总和:

var totals = Enumerable.Range(0, grid.Min(row => row.Count()))
                       .Select(column => grid.Sum(row => row[column]));

打印:

foreach (var total in totals)
    Console.WriteLine(total);

答案 2 :(得分:0)

你必须使用“列表” - 对象吗? Elseway,我会使用一个二维数组。

否则,您只需尝试,如何分别到达行和列,这样您就可以在简单的for循环中添加数字。它取决于List-object的方法。

答案 3 :(得分:0)

基于这个问题相当不灵活,但是怎么样:

int ans = 0;
for(int i = 0; i < list.length; i+=3)
{
    ans+= list[i];
}

你可以使用不同的初始迭代器值运行相同的3次,或者将整个事物放在另一个循环中,使用 startValue 作为运行3次的交互器。

话虽如此,你可能想要a)查看一种不同的存储数据的方式,如果它们确实存在于单个列表中b)查看更灵活的方法或者包含一个允许你的功能考虑不同的列号等...

干杯, 亚当