每季度过滤结果

时间:2010-06-15 15:26:24

标签: c# filter

我正在编写一个处理银行存款的简单C#应用程序。 我希望能够以年度,月度或季度基本显示结果,如何做到这一点?我怎样才能遍历一组结果,并且只显示每三个帖子(例如,如果我每季度使用一次)。

在Python中,我可以使用range(1,31,3)但是如何在C#中完成?

更新1

我想循环12次(每年)并计算每个循环的兴趣,但我只想每隔三个循环(每季度)打印结果。我怎样才能做到这一点?

6 个答案:

答案 0 :(得分:4)

我不确定我是否正确理解了这个问题,但如果你想要每3天一次,你可以使用这个表达式:

Enumerable.Range(1, 31).Where(e => e % 3 == 0);

返回以下值:

3 
6 
9 
12 
15 
18 
21 
24 
27 
30

编辑:

  

我想循环12次(每年)和   计算每个循环的兴趣,但我   只想打印结果   第三个循环。我怎么能做到这一点?

您可以简单地从1循环到12,如果您想打印每3个循环,只需查看此示例。 sum变量保留总计。

int sum=0;

foreach (int i in Enumerable.Range(1, 12))
{
    int tmp = i;
    sum += DoYourCalculation(tmp);
    if (tmp % 3 == 0)
    {
        Console.WriteLine(sum);
    }
}

答案 1 :(得分:2)

仅显示每三个项目?

for (int i = startingItem; i < list.Count; i += 3)
{
    // show list[i]
}

答案 2 :(得分:1)

这可能最好在SQL中完成,假设您使用的是WITH ROLLUP或类似的数据库。

答案 3 :(得分:0)

你在这里没有给我们太多帮助......你有什么样的数据结构?一个数据库?一个列表?数组?

你可以在循环中做到这一点:

for (int i = 1; i<= 12; i+=3) {...}

假设您每月有一条记录,这将每三个月发一次。虽然,季度结果通常是过去3个月的总和,但它们不是(嗯,可能比这更复杂)?因此,显示第3项可能还不够,您可能需要经历3个项目,显示该季度的总和,查看下3个项目,显示总和等。 ..

...如果我对它更好,我会尝试使用LINQ解决方案。 ;)

修改

总结数组中的3个数字并显示它们:

int sum;
for (int i =1; i<= 12; i+=3)
{
    //just make sure you don't go beyond the bounds of your array!
    sum = someArray[i]+someArray[i+1]+someArray[i+2];
    Console.WriteLine(sum);
}

替代:

int sum;
for (int i =1; i<= 12; i++)
{
    sum += someArray[i];
    if (i%3==0)
    {
        Console.WriteLine(sum);
        sum =0;
    }
}

......还有很多其他方法可以做到这一点。我没有编译这些,所以我不知道100%他们是你想要的,但他们应该让你走上正轨。

答案 4 :(得分:0)

类似于Shimrod所说的你可以做到这一点......

var range = Enumerable.Range(1, 10).Select(x => x * 3);

...无论如何都不会创建你要跳过的值。

如果你想通过LINQ获得更多功能,你可以创建这样的东西(优点是可以处理一组无数的数字[几乎是无限的,这会使用int所以它会在{{1}处溢出}}] ...

int.MaxValue

答案 5 :(得分:0)

由于您希望处理每个值,并希望为每个第三个值执行一些特殊操作,因此您需要在循环内测试循环变量以检测该间隔。一些其他解决方案处理每三个值,但不是每个值的情况。这样的事情应该做,根据ProcessMonth和ProcessQuarter的需要替换你的实际逻辑。

for(int numMonth = 0; numMonth < 12; numMonth++)
{
     ProcessMonth(balance[numMonths]);
     if ((numMonth + 1) % 3 == 0)
     {
          ProcessQuarter(numMonth);
     }
}