簡體   English   中英

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

[英]How to increment a number in a string?

我想增加一個字符串中的數字。

我的模特:

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);
}

錯誤:

運算符“ ++”不能應用於類型為“字符串”的操作數

預期結果:

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"

但是第二次運行它時,在標記為// *的行上出現錯誤。

我嘗試做一點您的代碼。 好像還好 在此處輸入圖片說明

我認為問題出在這里

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

?? "00001/S2" ?? "00001/S2"可能正在觸發錯誤。 嘗試在var s做一個斷點...並查看s.number的所有值是否都具有值或具有正確的可轉換值(可能只有字母無法轉換)

預期結果:

 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()無法處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM