如果特定列的所有項都爲空,我想從DataTable中刪除該列。在DataTable的所有列上執行此操作最優雅的方式是什麼?刪除DataTable中沒有數據的所有列
9
A
回答
32
可以使用Compute
方法,像這樣:
if (table.Compute("COUNT(ColumnName)", "ColumnName <> NULL") == 0)
table.Columns.Remove("ColumnName");
或者,你可以使用LINQ:
if (table.AsEnumerable().All(dr => dr.IsNull("ColumnName")))
table.Columns.Remove("ColumnName");
編輯:要完全回答這個問題:
foreach(var column in table.Columns.Cast<DataColumn>().ToArray()) {
if (table.AsEnumerable().All(dr => dr.IsNull(column)))
table.Columns.Remove(column);
}
您需要呼叫ToArray
,因爲循環將修改集合。
0
Function RemoveEmptyColumns(Datatable As DataTable) As Boolean
Dim mynetable As DataTable = Datatable.Copy
Dim counter As Integer = mynetable.Rows.Count
Dim col As DataColumn
For Each col In mynetable.Columns
Dim dr() As DataRow = mynetable.Select(col.ColumnName + " is Null ")
If dr.Length = counter Then
Datatable.Columns.Remove(col.ColumnName)
Datatable.AcceptChanges()
End If
return true
end function
0
public static void RemoveNullColumnFromDataTable(DataTable dt)
{
for (int i = dt.Rows.Count - 1; i >= 0; i--)
{
if (dt.Rows[i][1] == DBNull.Value)
dt.Rows[i].Delete();
}
dt.AcceptChanges();
}
+0
當然這會刪除整行,如果該行中的列1是DBNULL。並不完全是OP之後的事情。 – Steve
0
private static void RemoveUnusedColumnsAndRows(DataTable table)
{
for (int h = 0; h < table.Rows.Count; h++)
{
if (table.Rows[h].IsNull(0) == true)
{
table.Rows[h].Delete();
}
enter code here
}
table.AcceptChanges();
foreach (var column in table.Columns.Cast<DataColumn>().ToArray())
{
if (table.AsEnumerable().All(dr => dr.IsNull(column)))
table.Columns.Remove(column);
}
table.AcceptChanges();
}
1
你清楚這樣datatable.you使用的所有列。
datatable.Columns.Clear();
相關問題
- 1. 所有數據有刪除
- 2. indexeddb - 列出/刪除所有數據庫
- 3. 刪除VBA中的所有數據,但只有一列
- 4. 刪除所有列
- 5. 刪除datagridview中的所有數據
- 6. 刪除庫中的所有數據集
- 7. 從Sugar ORM中刪除所有表中的所有數據
- 8. 刪除所有Couchbase數據/文檔ios(或刪除所有ios數據?)
- 9. 從gridview中刪除所有數據
- 10. 刪除陣列中沒有子項的所有元素
- 11. 從數據庫的所有表中刪除所有記錄
- 12. 從數據庫的所有表中刪除所有行
- 13. 選擇所有數據行,但刪除單列中有重複數據的行
- 14. 從列中的所有數據中刪除空格 - Sqlite
- 15. Erlang:有沒有從列表中刪除所有嵌套元素的函數?
- 16. 刪除所有沒有值的行
- 17. VB.NET從dataTable刪除行將刪除所有行
- 18. 沒有錯誤,但沒有從Sqlite數據庫刪除數據使用刪除
- 19. 一次從DataTable中刪除行,沒有循環,其中列有空值
- 20. 如何刪除Firebase中的所有條目(刪除數據)?
- 21. 數據沒有從sqlite3表中刪除
- 22. 從DataSet中的DataTable中刪除所有行
- 23. 如何刪除列中的所有數據> 70個字符
- 24. 刪除數據幀/系列中的所有False值
- 25. C#從所有值爲零的數據表中刪除列
- 26. VBA刪除動態圖表中的所有數據系列
- 27. DataTable上的RejectChanges()刪除DataGridView中的所有行
- 28. 刪除所有其他列
- 29. Datagridview刪除所有列
- 30. Kendo Grid刪除所有列
不錯。調整代碼以檢查所有列名稱,並獲得綠色複選標記。 – Larsenal
我聽說過PlzSendTheCodes嗎? –
也許;-)。我已經自己實現了它。只是不想標記它是正確的,因爲它沒有完全回答最初的問題。 – Larsenal