我使用 CsvHelper.Configuration.ClassMap 來讀取 csv 檔案并面臨資料驗證。
我找到了 Validate 選項并寫了一個簡單的代碼:
Map(m => m.Field).Name("myField").Validate(row => row.Contains('='));
但是我不理解輸出并且對可能的選項有點困惑。
所以,我的問題是:
如果它回傳 true - 我會收到字串嗎?還是布爾真?之后我想將該值添加到資料庫中..
如果它回傳 false - 我收到了什么?而且,無論如何,該值不會添加到資料庫中嗎?
任何想法如何添加簡單的驗證?通常的代碼,沒有驗證:
Map(m => m.Field).Name("myField");
先感謝您!
uj5u.com熱心網友回復:
你可以使用 CsvHelper 27.1.1 這樣寫
Map(m => m.Field).Name("myField").Validate(x => x.Field.Contains('='));
在 15.0.3 中,您不會使用 Field
Map(m => m.Field).Name("myField").Validate(x => x.Contains("="));
Validate 函式具有以下簽名:
public virtual MemberMap<TClass, TMember> Validate(Validate validateExpression);
Validate 型別是一個以這種方式宣告的委托:
public delegate bool Validate(ValidateArgs args);
ValidateArgs 具有我在代碼示例中使用的屬性 Field。
如果在轉換程序中條件為假,它將拋出 FieldValidationException。
您可以捕獲此例外并添加一些邏輯。
- 如果為 true,則轉換將按預期作業,您的欄位將被映射。
- 將拋出 FieldValidationException。
- 見上面的代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/313611.html
上一篇:Python-讀取文本并寫入csv。將空列替換為默認的“N/A”值
下一篇:在R中使用csv的對數刻度直方圖
