嵌套循环算法

时间:2013-12-26 15:19:12

标签: c# algorithm loops edi

我正在进行一些EDI映射,但我无法通过有效循环访问某些数据的最佳方法。目前我有一个很大的if else语句,但我认为嵌套循环可能会做得更好/更干净。

在数据中,我有多个停止段,分别是Pickups(PU)或Drops(DR),并根据每种类型的数量,确定需要设置的值。我可以循环停止并获得拾取和丢弃的总数,但设置值是让我感到困惑。 (总是至少有1个PU和1个DR)

逻辑的作用如下:

  1. 如果只有1个PU,则该值应映射到CL(完全加载)。
  2. 如果有多个PU,那么起始PU应该映射到PL(部分负载),最后PU应该是CL(完全负载)
  3. 如果只有1个DR,则该值应映射到CU(完全卸载)。
  4. 如果有多个DR,则开始DR应映射到PU(部分卸载),最后一个DR应为CU(完全卸载)。
  5. 因此,两个PU和两个DR负载应循环4次,结果应如下所示:

    • PL
    • CL
    • PU
    • CU

    下面的C#代码给了我拾取/交付的数量

    int iStops = FUNC.ToInteger(STOP_COMPANY_4_LOOP.LoopCount); //Number of stops
    int iPickup = 0;
    int iDrop = 0;
    for (int x = 0; x<iStops; x++)
    {
        if(STOP_REASON_CODE.Value == "PU"){
        iPickup++;
    }
    else iDrop++;
    STOP_COMPANY_4_LOOP.MoveNext();
    

    我似乎无法通过循环看起来如何看待拾取器数量并查看当前值并设置值并移动到下一条记录。一旦我有算法,我就可以编写代码(我认为),但我没有想出一个可行的解决方案。

    由于

    (编辑) 这是一个210位置平面文件导出,我正在映射到X12 EDI格式,以便为我们的贸易伙伴开具发票。我正在使用EDI软件包(ACOM的EZConnect)来进行映射。我完成了整个地图,除了这一个元素。

    (编辑2) 平面文件已创建,我们的结算系统会自动创建。映射软件根据我构建的映射导入平面文件并将其转换为X12,并且已经将现有的停止值写入该元素。平面文件包含其中的所有停止数据,但它仅使用2个代码,PU用于拾取,DR用于丢弃,我们的贸易伙伴需要基于上述4个规则的不同代码。因此,我希望能够帮助算法查看当前值并查看拾取次数与丢弃次数,并确定应该更改的值。

0 个答案:

没有答案