public string NextVal() { const string YEAR4D_MM = "{YYYYMM}"; const string YEAR4D = "{YYYY}"; const string YEAR2D = "{YY}"; const string YEAR2D_MM = "{YYMM}"; const string YEAR4D_MMM = "{YYYYMMM}"; string[] simpleList = new string[] { YEAR2D, YEAR2D_MM, YEAR4D, YEAR4D, YEAR4D_MM }; CurrentValue += 1; string currVal = CurrentValue.ToString().PadLeft(SequenceId.SequLength, '0'); Save(); string value = SequenceId.SequMask.Replace("{$}", currVal); if (value.Contains(YEAR4D_MMM)) { int monVal = int.Parse(SequenceKey.Substring(4, 2)); string monName = new DateTime(2010, monVal, 1).ToString("MMM", CultureInfo.InvariantCulture); string yearPart = SequenceKey.Substring(0, 4) + monName; value = value.Replace(YEAR4D_MMM, yearPart); } else { foreach (var item in simpleList) { if (value.Contains(item) && SequenceKey.Length > (item.Length - 2)) { value = value.Replace(item, SequenceKey.Substring(0, item.Length)); break; } } } return(value); }