請告訴我如何解決這個問題。
這是一個示例表:

填充資料如下:

我有一種方法可以自動為CerNambe列分配一個數字:
public string CerNamber()
{
var cer = DBContext.Certificate
.Where(p => p.CerNambe != null)
.OrderByDescending(p => p.Id)
.FirstOrDefault();
string _cer = cer.CerNambe;
int outCer = Convert.ToInt32(_cer.Substring(0, _cer.IndexOf('-')));
string newCer = Convert.ToString(outCer 1 "-P/" DateTime.Now.Year);
return newCer;
}
但是我遇到了一個問題。如果號碼是用戶錯誤分配的,則將其洗掉,違反編號。
這里的問題是:如何找到這個違規并將缺失的號碼分配給下一條記錄。但是在這種情況下,自動編號就行不通了?由于方法是尋找最后一條記錄!
uj5u.com熱心網友回復:
如何找到這種違規并將缺失的編號分配給下一條記錄?
如果我是你,我會修改資料庫模式,這樣我就不必這樣做了。但如果必須,最簡單但最丑陋的方法是使用 RegEx 過濾和查找特殊模式。
解決方案:如果您的底層資料庫提供程式是 SQL Server,您可以使用SqlMethods.Like將資料庫結果集過濾為可管理的資料子集,然后可以使用 RegEx 在本地進行分析。
Linq to Entities 不支持正則運算式,因為它無法將其轉換為 SQL。您可以將所有記錄加載回記憶體,然后在它們上使用 Linq to Objects(ToList()對變數執行 a.,然后對該正則運算式執行第二次 LINQ 查詢),但這意味著您可以將每個 DB 記錄加載到記憶體中運行此查詢。
同樣的建議也適用:修改資料庫模式,這樣您就不必這樣做了。
要了解 RegEx,請訪問: System.Text.RegularExpressions.Regex 類
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/463232.html
上一篇:EFCore按ID洗掉
