C# 自动编号字段

C# 自动编号字段,c#,plugins,dynamics-crm,dynamics-crm-online,C#,Plugins,Dynamics Crm,Dynamics Crm Online,我想在帐户实体上创建自动编号插件。如果账户名称=摩根斯坦利,则账户编号=MORG0001;如果账户名称=摩根汽车,则账户编号=MORG0002;如果账户名称为ABC Tech,则账户编号应为ABCT00001 AccountNumber接受帐户名的前4个字符,并附加4个零,如果已经存在具有相同4个字符的帐户名,则将其递增1 方法名称:newAccunName() 我写的代码: public void updaterecord(EntityCollection account) {

我想在帐户实体上创建自动编号插件。如果账户名称=摩根斯坦利,则账户编号=MORG0001;如果账户名称=摩根汽车,则账户编号=MORG0002;如果账户名称为ABC Tech,则账户编号应为ABCT00001

AccountNumber接受帐户名的前4个字符,并附加4个零,如果已经存在具有相同4个字符的帐户名,则将其递增1

方法名称:newAccunName()

我写的代码:

    public void updaterecord(EntityCollection account)
    {
        int totalrecords = account.Entities.Count;
        string[] name = new string[totalrecords];
        string append = "0000";
        string value = "1";
        int number = int.Parse(value);

        string[] accountnumber = new string[totalrecords];
        for (int i = 0; i < totalrecords; i++)
        {
            ////check the accountname and take first 4 characters from it.

            name[i] = account.Entities[i].Attributes["name"].ToString();
            string partialstring = name[i].Substring(0, 4);
            if (entity.Attributes.Contains("accountnumber") == false)
            {

                string anumber = string.Concat(partialstring, append, value);
                entity.Attributes.Add("accountnumber", anumber.ToString());
            }
            else if (entity.Attributes.Contains("accountnumber") == true)
            {
                newaccountname(account);
            }

        }
    }
    public void newaccountname(EntityCollection account)
    {
        int totalrecords = account.Entities.Count;
        string[] name = new string[totalrecords];
        string[] accountnumber = new string[totalrecords];
        for (int i = 0; i < totalrecords; i++)
        {
            string accountNumber = entity.GetAttributeValue<string>("accountnumber");
            accountnumber[i] = account.Entities[i].Attributes["accountnumber"].ToString();
            name[i] = account.Entities[i].Attributes["name"].ToString();
            string paccountnumber = accountnumber[i].Substring(0, 4);
            if(name[i] == paccountnumber)
            {
                //
            }
        }


    }
}
public void updaterecord(EntityCollection帐户)
{
int totalrecords=account.Entities.Count;
字符串[]名称=新字符串[totalrecords];
字符串append=“0000”;
字符串值=“1”;
int number=int.Parse(值);
string[]accountnumber=新字符串[totalrecords];
对于(int i=0;i
好吧,我不打算为你解答测验:),但这里有一些提示

  • 您需要先删除名称中的所有空格

  • 您需要比较名称中的4个字符(在 删除空格)中仅包含名称的每4个字符 所以当你将“MORG0001”与“摩根汽车”进行比较时,你是 将“MORG”与“MORG”进行比较,在本例中,这两个词都是正确的

  • 数一数你有多少“MORG”和新帐户将是多少 [前4个字母][0000][计数+1]


您的问题是什么?我如何获取以前创建的记录并将数字增加1。例如,如果帐户名=Morgan Stanely,帐户号=MORG00001,如果帐户名=Morgan Motor,则帐户号=MORG0002,如果您准确地告诉我们您发布的代码中存在问题的位置,则会更加清楚。在使用子字符串之前,建议检查是否有足够的字母可以使用。否则将产生
ArgumentOutOFRangeException
结果…请也查看本文: