2017-03-28 43 views
1

我有一個只有一列包含字符串的數據表。使用DataTable.Select()方法獲取具有DBNull.Value的行集合的最佳方法是什麼?使用Select語句從數據表中查找帶有DBNull.Value的行

DataTable dataTable = new DataTable("names"); 
DataColumn newColumn = new DataColumn("Name", System.Type.GetType("System.String") 
{ 
AllowDBNull = true 
}; 
DataRow row1 = dataTable.NewRow(); 
row1["Name"] = "John"; 
dataTable.Rows.Add(row1); 
DataRow row2 = dataTable.NewRow(); 
row2["Name"] = DBNull.Value; 
dataTable.Rows.Add(row2); 

我試圖dataTable.Select( 「名稱爲空」)和它返回2行。但不是null和DBNull.Value不同,因爲在null中表示無效的引用和DBNull.Value表示不存在的值?

+1

可能的重複[最好的方法來檢查數據表是否有一個空值](http://stackoverflow.com/questions/4604414/best-way-to-check-if-a-data - 表 - 擁有 - 一個無效值功能於它)。或者專門用'Select()':http://stackoverflow.com/q/9324088/1132334 – dlatikay

回答

1

也許是這樣的:

var NullRows = dataTable.Select("[Name]=''"); 
1

用途:

var nullRows = dataTable.Select("[Name] is null"); 

另一種選擇是使用LINQ

var query = dataTable.AsEnumerable() 
    .Where(r => r.Field<string>("Name") == null); 

請確保您的列添加到您的DataTable

dataTable.Columns.Add(newColumn); 
+0

謝謝。你還可以請澄清,如果null和DBNull.Value在使用select語句時是相同的? –

+0

@KrishnaveniBujaranpally,是的。 – Habib

相關問題