[英]Remove datatable row if any column value is empty c#
即使數據表中的任何列具有空值,我也需要從數據表中刪除該行。
例如:
我的數據表有兩列
Value Input
Dep Phase 1
Sec
Div Phase 2
結果
Value Input
Dep Phase 1
Div Phase 2
我想刪除第二行,因為輸入列有空值。 我堅持使用以下代碼。
dtTable = dtTable.Rows.Cast<DataRow>()
.Where(row => !row.ItemArray.All(field => field is DBNull || string.IsNullOrWhiteSpace(field as string))).
.CopyToDataTable();
誰能建議我如何實現這一目標?
根據您提到的要求,您需要使用Any
來檢查是否至少列具有null
值或空字符串,它會過濾掉該行。 所以,喜歡:
row => !row.ItemArray.Any(field => field is DBNull ||
string.IsNullOrWhiteSpace(field as string))
如果您的所有列都是string
類型,那么上面的代碼可以正常工作,否則您需要通過調用ToString()
將其顯式轉換為字符串:
row => !row.ItemArray.Any(field => field is DBNull ||
string.IsNullOrWhiteSpace(field.ToString()))
現在,這將只返回每一列都具有值的那些行。
如果可以使用for循環。 我們可以檢查每一行和每一列是否有空值
for (int i = dt.Rows.Count - 1; i >= 0; i--)
{
if (dt.Rows[i]["col1"] == DBNull.Value || dt.Rows[i]["col2"] == DBNull.Value)
{
dt.Rows[i].Delete();
}
}
試試這個:
for (int i = dt.Rows.Count - 1; i >= 0; i--)
{
if (dt.Rows[i]["Column2"].ToString() == "")
{
dt.Rows[i].Delete();
dt.AcceptChanges();
}
}
for (int i = dt.Rows.Count - 1; i >= 0; i--)
{
if (dt.Rows[i][1] == DBNull.Value)
{
dt.Rows[i].Delete();
}
}
dt.AcceptChanges();
它刪除數據表中的空行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.