我想在字符串中增加一个数字。
我的模特:
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"
但是当我第二次运行它时,我在标记为// *
的行上出现错误。
答案 0 :(得分:0)
我认为问题出在这里
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()
无法处理。