C# 编程逻辑!:O

C# 编程逻辑!:O,c#,ssis,C#,Ssis,由于缺乏看似合理的编程逻辑而被难倒 我在SSIS的脚本任务中。需要做一些数据转换,如下所示 switch(LeadTime) { case: 1 WM1 = DAY1 WM2 = DAY2 WM3 = DAY3 WM4 = DAY4 WM5 = DAY5 WM6 = DAY6 WM7 = DAY7 case: 2 WM1 = DAY1 + DAY2 WM2 = DAY2 + DAY3 WM3 = DAY3 + DAY4 WM4 = DAY4 + DAY5 WM5 = DAY5 + DA

由于缺乏看似合理的编程逻辑而被难倒

我在SSIS的脚本任务中。需要做一些数据转换,如下所示

switch(LeadTime)
{

case: 1

WM1 = DAY1
WM2 = DAY2
WM3 = DAY3
WM4 = DAY4
WM5 = DAY5
WM6 = DAY6
WM7 = DAY7


case: 2

WM1 = DAY1 + DAY2
WM2 = DAY2 + DAY3
WM3 = DAY3 + DAY4
WM4 = DAY4 + DAY5
WM5 = DAY5 + DAY6
WM6 = DAY6 + DAY7
WM7 = DAY7 + DAY1


case: 3


WM1 = DAY1 + DAY2 + DAY3
WM2 = DAY2 + DAY3 + DAY4
WM3 = DAY3 + DAY4 + DAY5
WM4 = DAY4 + DAY5 + DAY6
WM5 = DAY5 + DAY6 + DAY7
WM6 = DAY6 + DAY7 + DAY1
WM7 = DAY7 + DAY1 + DAY2


..................

case: 7 

WM1 = DAY1 + DAY2 + DAY3 + DAY4 + DAY5 + DAY6 + DAY7
WM2 = DAY2 + DAY3 + DAY4 + DAY5 + DAY6 + DAY7 + DAY1 
WM3 = DAY3 + DAY4 + DAY5 + DAY6 + DAY7 + DAY1 + DAY2 
WM4 = DAY4 + DAY5 + DAY6 + DAY7 + DAY1 + DAY2 + DAY3 
WM5 = DAY5 + DAY6 + DAY7 + DAY1 + DAY2 + DAY3 + DAY4 
WM6 = DAY6 + DAY7 + DAY1 + DAY2 + DAY3 + DAY4 + DAY5 
WM7 = DAY7 + DAY1 + DAY2 + DAY3 + DAY4 + DAY5 + DAY6 


}
我如何围绕它构建一个循环,使它成为一个好的编程?我不知所措,因为它在中间值之后从两端相加

这就是我所能做的!:O

case: 7

for(int i=0;i<LeadTime;i++)
{
WM1 += Array[i];
WM2 += Array[i];
...
WM7 += Array[i];
}
案例:7

对于(int i=0;i您可以使用模来进行环绕。这应该适用于所有:

WM = new int[7];
for (int i = 0; i < LeadTime; i++) {
  for (int j = 0; j < WM.Length; j++) {
    WM[j] += Array[(i + j) % 7];
  }
}
WM=newint[7];
对于(int i=0;i
类似的方法应该适用于所有情况(假设数组是基于零的):


for(int i=0;i您要做的是创建一个可以针对不同情况调用的函数

function foo(int LeadTime) {  
  for(int i=0; i < LeadTime; i++){  
      int k = i;  
      for (int j = 0; j < LeadTime; j++){  
          if (k > 7) {  k = 1; }  
          wm[i] += day[k];  
          k++;  
      }  
  }  
}
函数foo(int提前期){
对于(int i=0;i7){k=1;}
wm[i]+=天[k];
k++;
}  
}  
}

我很快就想到了这段代码。基本上,你需要做一个嵌套循环

string[] days = new string[] { "DAY1", "DAY2", "DAY3", "DAY4", "DAY5", "DAY6", "DAY7" };

            List<string> res = new List<string>();
            res.Add(string.Empty);

            int Leadtime = 7;

            for (int i = 1; i <= Leadtime; i++)
            {
                res.Add(string.Empty);
                int tmp = i + Leadtime - 1;

                for (int x = i; x <= tmp; x++)
                {
                    if (x > Leadtime) { x = 1; tmp = i-1; }
                    res[i] += " " + days[x-1];
                }

            }

            foreach (string s in res)
            {
                Console.WriteLine(s);
            }

            Console.ReadKey();

仅供参考,您的
案例7
在数学上都是相同的。是的,丹尼尔。这只是一个问题的说明。删除了“函数编程”标签。再看一次问题,我认为我的代码不能解决确切的问题,因为我添加了所有天。问题显示根据交付周期跳过了一些天。我的代码只是对于“案例7”,我会接受我想要的…优雅…简单,对我生锈的大脑来说容易!!感谢所有人的回答…这是非常棒的回答…如果你想要更多,请随时发布…太有趣了!!!
string[] days = new string[] { "DAY1", "DAY2", "DAY3", "DAY4", "DAY5", "DAY6", "DAY7" };

            List<string> res = new List<string>();
            res.Add(string.Empty);

            int Leadtime = 7;

            for (int i = 1; i <= Leadtime; i++)
            {
                res.Add(string.Empty);
                int tmp = i + Leadtime - 1;

                for (int x = i; x <= tmp; x++)
                {
                    if (x > Leadtime) { x = 1; tmp = i-1; }
                    res[i] += " " + days[x-1];
                }

            }

            foreach (string s in res)
            {
                Console.WriteLine(s);
            }

            Console.ReadKey();
DAY1 DAY2 DAY3 DAY4 DAY5 DAY6 DAY7
DAY2 DAY3 DAY4 DAY5 DAY6 DAY7 DAY1
DAY3 DAY4 DAY5 DAY6 DAY7 DAY1 DAY2
DAY4 DAY5 DAY6 DAY7 DAY1 DAY2 DAY3
DAY5 DAY6 DAY7 DAY1 DAY2 DAY3 DAY4
DAY6 DAY7 DAY1 DAY2 DAY3 DAY4 DAY5
DAY7 DAY1 DAY2 DAY3 DAY4 DAY5 DAY6