C#遍历所有可能的值,当找不到时增加值并继续

时间:2018-08-02 15:36:58

标签: c# string

我需要将每个供应商代码的请求发送到Web服务(我知道这听起来很疯狂,但所有者是通过这种方式设计的。)

供应商代码格式为:

30X1X1XXXXX1

您可以检查我到目前为止所做的事情(github链接:https://github.com/rareba/SiapWebServices_Library/blob/master/SiapWebServices_Library/SiapWebServicesFornitore.cs

public static List<StructAnaFornitoreOut> Get_All_Suppliers(WebServicesFornitoreClient client, StructLogin loginCredentials, string showSuspended = "N", string searchType = "R")
    {
        var supplier_list = new List<StructAnaFornitoreOut>();
        var supplier_retrived = new StructAnaFornitoreOut
        {
            esito = new StructEsito
            {
                stato = "OK",
            }
        };

        int KO_Count = 0;
        int conto = 1;
        int sottoconto = 1;
        int codice = 0;
        string codFornitore = Generate_Supplier_Code_String(codice, sottoconto, conto);

        var search = new StructAnaFornitoreIn
        {
            IAnaFornitore = new StructAnaFornitore
            {
                codice = codFornitore
            },
            IAzione = "C",
            //vModRicerca = new string[] { "COD_FIS","PAR_IVA","ALT_SIS" }
        };
        while (KO_Count < 10)
        {
            while (KO_Count < 10)
            {
                while (KO_Count < 10)
                {
                    supplier_retrived = client.gestioneAnagraficaFornitore(loginCredentials, search);

                    if (supplier_retrived.esito.stato == "KO")
                    {
                        KO_Count++;
                    }
                    else
                    {
                        supplier_list.Add(supplier_retrived);
                        codFornitore = Generate_Supplier_Code_String(codice, sottoconto, conto);
                        Console.WriteLine(codFornitore);
                        codice++;
                        search.IAnaFornitore.codice = codFornitore;
                    }
                }
                KO_Count = 0;
                sottoconto++;
            }
            KO_Count = 0;
            conto++;
        }

        return supplier_list;
    }

    // Returns a supplier code string increased by 1
    public static string Generate_Supplier_Code_String(int codice = 0, int sottoconto = 1, int conto = 1, string mastro = "30")
    {
        codice++;

        string string_conto = " ";
        string string_sottoconto = " ";
        string string_codice = "     ";

        if (conto > 9)
        {
            string_conto = "";
        }

        if (sottoconto > 9)
        {
            string_sottoconto = "";
        }

        if (codice > 9)
        {
            string_codice = "    ";
        }
        else if (codice > 99)
        {
            string_codice = "   ";
        }
        else if (codice > 999)
        {
            string_codice = "  ";
        }
        else if (codice > 9999)
        {
            string_codice = "  ";
        }
        else if (codice > 99999)
        {
            string_codice = " ";
        }
        else if (codice >= 999999)
        {
            string_codice = "";
        }

        string customercode = mastro + string_conto + conto + string_sottoconto + sottoconto + string_codice + codice;

        return customercode;
    }

但是这根本不起作用:它停在供应商30 1 1 100并开始增加sottoconto,就像没有明天一样。

该想法应该是做类似的事情: -获取供应商数据 -鳕鱼增加1 -如果10次都没有得到任何东西(esito.status =“ KO”),则增加sottoconto并从codice = 1重新开始 -如果在增加sottoconto之后仍然没有获得10倍的收益,则增加conto并从codice = 0重新开始

0 个答案:

没有答案