C# 按季度筛选结果

C# 按季度筛选结果,c#,filter,C#,Filter,我正在编写一个简单的C#应用程序,用于处理银行储蓄。 我想能够显示的结果,无论是每年,每月或每季度基本如何可以做到这一点?例如,我如何循环浏览一组结果并仅显示每三篇文章(如果我使用季刊) 在Python中,我可以使用范围(1,31,3),但在C#中是如何实现的 更新1 我想循环12次(每年)并计算每个循环的利息,但我只想每三次(每季度)打印一次结果。如何实现这一点?假设您使用的是数据库,使用或类似的工具,这可能最好用SQL完成。假设您使用的是数据库,使用或类似的工具,这可能最好用SQL完成。您在

我正在编写一个简单的C#应用程序,用于处理银行储蓄。 我想能够显示的结果,无论是每年,每月或每季度基本如何可以做到这一点?例如,我如何循环浏览一组结果并仅显示每三篇文章(如果我使用季刊)

在Python中,我可以使用
范围(1,31,3)
,但在C#中是如何实现的

更新1


我想循环12次(每年)并计算每个循环的利息,但我只想每三次(每季度)打印一次结果。如何实现这一点?

假设您使用的是数据库,使用或类似的工具,这可能最好用SQL完成。

假设您使用的是数据库,使用或类似的工具,这可能最好用SQL完成。

您在这里没有给我们太多的工作。。。你有什么样的数据结构?数据库?名单?阵列

您可以在循环中简单地执行此操作:

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

for(inti=1;i您在这里没有给我们太多的工作空间……您有什么样的数据结构?数据库?列表?数组

您可以在循环中简单地执行此操作:

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

for(int i=1;i仅每三个项目显示一次

for (int i = startingItem; i < list.Count; i += 3)
{
    // show list[i]
}
for(int i=startingItem;i
是否仅每三项显示一次

for (int i = startingItem; i < list.Count; i += 3)
{
    // show list[i]
}
for(int i=startingItem;i
我不确定我是否正确理解了这个问题,但如果您希望,例如每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);
    }
}

我不确定我是否正确理解了这个问题,但如果您希望,例如,每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);
    }
}
类似于你说的你可以这样做

var range = Enumerable.Range(1, 10).Select(x => x * 3);
…它的优点是不会创建您无论如何都要跳过的值

如果你想让LINQ更强大,你可以自己创建这样的东西(优点是可以处理一组无限的数字[几乎是无限的,这将使用
int
,因此它将在
int.MaxValue
]溢出]

public static class EnumerableCounters
{
    public static IEnumerable<int> Counter()
    {
        return Counter(0);
    }
    public static IEnumerable<int> Counter(int offset)
    {
        return Counter(offset, 1);
    }
    public static IEnumerable<int> Counter(int offset, int step)
    {
        for (var x = offset; ; x += step)
            yield return x;
    }
}
class Program
{
    static void Main(string[] args)
    {
        var vals = EnumerableCounters.Counter(10, 3).Take(5).ToArray();
    }
}
公共静态类枚举计数器
{
公共静态IEnumerable计数器()
{
返回计数器(0);
}
公共静态IEnumerable计数器(整数偏移)
{
返回计数器(偏移量,1);
}
公共静态IEnumerable计数器(整数偏移,整数步长)
{
对于(变量x=偏移量;x+=步长)
收益率x;
}
}
班级计划
{
静态void Main(字符串[]参数)
{
var vals=EnumerableCounters.Counter(10,3).Take(5.ToArray();
}
}
类似于所说的您可以这样做

var range = Enumerable.Range(1, 10).Select(x => x * 3);
…它的优点是不会创建您无论如何都要跳过的值

如果你想让LINQ更强大,你可以自己创建这样的东西(优点是可以处理一组无限的数字[几乎是无限的,这将使用
int
,因此它将在
int.MaxValue
]溢出]

public static class EnumerableCounters
{
    public static IEnumerable<int> Counter()
    {
        return Counter(0);
    }
    public static IEnumerable<int> Counter(int offset)
    {
        return Counter(offset, 1);
    }
    public static IEnumerable<int> Counter(int offset, int step)
    {
        for (var x = offset; ; x += step)
            yield return x;
    }
}
class Program
{
    static void Main(string[] args)
    {
        var vals = EnumerableCounters.Counter(10, 3).Take(5).ToArray();
    }
}
公共静态类枚举计数器
{
公共静态IEnumerable计数器()
{
返回计数器(0);
}
公共静态IEnumerable计数器(整数偏移)
{
返回计数器(偏移量,1);
}
公共静态IEnumerable计数器(整数偏移,整数步长)
{
对于(变量x=偏移量;x+=步长)
收益率x;
}
}
班级计划
{
静态void Main(字符串[]参数)
{
var vals=EnumerableCounters.Counter(10,3).Take(5.ToArray();
}
}

由于您希望处理每一个值,并且希望为每三个值执行一些特殊操作,因此您需要在循环中测试循环变量以检测该间隔。其他一些解决方案处理每三个值,但不是每一个值的情况。类似这样的解决方案可以根据需要替换实际逻辑r进程月份和进程季度

for(int numMonth = 0; numMonth < 12; numMonth++)
{
     ProcessMonth(balance[numMonths]);
     if ((numMonth + 1) % 3 == 0)
     {
          ProcessQuarter(numMonth);
     }
}
for(int numMonth=0;numMonth<12;numMonth++)
{
处理月份(余额[个月]);
如果((numMonth+1)%3==0)
{
工艺季度(纽蒙斯);
}
}

由于您希望处理每一个值,并且希望为每三个值执行一些特殊操作,因此您需要在循环中测试循环变量以检测该间隔。其他一些解决方案处理每三个值,但不是每一个值的情况。类似这样的解决方案可以根据需要替换实际逻辑r进程月份和进程季度

for(int numMonth = 0; numMonth < 12; numMonth++)
{
     ProcessMonth(balance[numMonths]);
     if ((numMonth + 1) % 3 == 0)
     {
          ProcessQuarter(numMonth);
     }
}
for(int numMonth=0;numMonth<12;numMonth++)
{
处理月份(余额[个月]);
如果((numMonth+1)%3==0)
{
工艺季度(纽蒙斯);
}
}

我没有使用数据库,只有数组之类的东西。@user339067-这将是你的第一个问题,不要使用数组和“某某”来存储银行储蓄账户信息。我没有使用数据库,只有数组之类的东西。@user339067-这将是你的第一个问题,不要使用数组和“某某”来存储银行储蓄账户信息。你可能会因此,考虑使用复利公式,你也可以考虑使用复利公式,“你可能需要经过3个项目,显示它们的总和,然后再看下3个项目,显示SU。