.net判斷System.Data.DataRow中是否包含某列


大家對將DataRow轉成實體對象並不陌生,轉成實體的時候一般都會加上這個判斷  if (row["字段名"] != null && row["字段名"].ToString() != "") ,這個寫法會存在一個問題,當row不存在這個字段時就會拋出異常,導致程序崩潰,這種情況在數據庫頻繁地修改出現的頻率高,因為修改數據庫時,代碼里面轉成實體的方法就不適用了,基於業務的不同可能存在多個轉成實體的方法,這樣修改數據庫時,並修改代碼的同時很容易遺漏修改,導致程序崩潰,特別是需求經常變動的項目(改數據庫)。所以個人建議在判斷里面加多一個邏輯條件:

 if (row.Table.Columns.Contains("字段名") && row["字段名"] != null && row["字段名"].ToString() != "")   //row.Table.Columns.Contains("字段名") 是判斷row中是否存在該字段,存在返回true,否則返回 false

這個邏輯條件可以避免當row不存在該字段是出現的錯誤。

代碼例子

實體類:

1     public class User
2     {
3         public int UserId { get; set; }
4         public string UserName { get; set; }
5         public int Age { set; get; }
6     }

轉成實體類方法:

 1             User userModel=new User();
 2             if (row.Table.Columns.Contains("UserId") && row["UserId"] !=null && row["UserId"].ToString() !="")
 3             {
 4                 userModel.UserId = Convert.ToInt32(row["UserId"]);
 5             }
 6             if (row.Table.Columns.Contains("UserName") && row["UserName"] != null && row["UserName"].ToString() != "")
 7             {
 8                 userModel.UserId = Convert.ToInt32(row["UserName"]);
 9             }
10             if (row.Table.Columns.Contains("Age") && row["Age"] != null && row["Age"].ToString() != "")
11             {
12                 userModel.UserId = Convert.ToInt32(row["Age"]);
13             }
14             return userModel;
15         }

如有不足之處,歡迎指正


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM