如何增加字符串中的数字?

时间:2017-11-14 03:43:28

标签: c# asp.net asp.net-mvc

我想在字符串中增加一个数字。

我的模特:

public partial class updown
{
    public int id { get; set; }
    public string number { get; set; }
}

我的控制器:

[HttpPost]
public ActionResult Index(updown viewModel)
{
    var lastPO = db.updowns
                   .OrderByDescending(o => o.number)
                   .Select(m => m.number)
                   .FirstOrDefault() ?? "00001";

    item.number = lastPO++; // I get an error on this line
    db.updowns.Add(item);
    db.SaveChanges();

    return View(viewModel);
}

错误:

  

运算符'++'不能应用于'string'类型的操作数

预期结果:

item.number // "00002"

更新

基于现已删除的评论,我有:

[HttpPost]
public ActionResult Index(updown viewModel)
{
    var s = db.updowns
              .OrderByDescending(o => o.number)
              .Select(m => m.number)
              .FirstOrDefault() ?? "00001/S2";

    var lastPO = Convert.ToInt32(s.Substring(s.Length - 5 - 3, s.Length - 3)); // *
    item.number = "EMOC-" + (++lastPO).ToString("00000");
    db.updowns.Add(item);
    db.SaveChanges();

    return View(viewModel);
}

预期结果:

item.number // "EMOC-00002/S2"

但是当我第二次运行它时,我在标记为// *的行上出现错误。

2 个答案:

答案 0 :(得分:0)

我尝试了一些你的代码。看起来很好 enter image description here

我认为问题出在这里

var s = db.updowns
              .OrderByDescending(o => o.number)
              .Select(m => m.number)
              .FirstOrDefault() ?? "00001/S2";

?? "00001/S2"可能会触发错误。尝试在var s中执行断点...并查看所有s.number是否具有值或具有正确的可转换值(可能只有不能转换的字母)

答案 1 :(得分:0)

  

预期结果:

item.number // "EMOC-00002/S2"

您需要+ "/S2"

item.number = "EMOC-" + (++lastPO).ToString("00000") + "/S2";

解释

第二次运行上一代码时会发生什么var s = "EMOC-00002"所以s.Substring(s.Length - 5 - 3, s.Length - 3)"OC-00"而不是"00002"字符串,而Convert.ToInt32()无法处理。