从数据集中删除空白行

本文关键字:空白 删除 集中 数据 数据集 | 更新日期: 2023-09-27 18:14:25

  ds.Tables.Add(dt);
  return ds;

在上面的代码片段中,我如何返回我的数据集,但排除所有空白行,即空白的意思行与空或空字符串在他们的所有列。

从数据集中删除空白行

您必须事先进行检查,然后像下面这样返回DataTable(一个示例)

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();
     }
}
dt.AcceptChanges();
ds.Tables.Add(dt);
return ds;

如果有人偶然看到这篇文章,这是我想出的解决方案:

// REMOVE ALL EMPTY ROWS
dt_Parsed.Rows.Cast<DataRow>().ToList().FindAll(Row =>
    { return String.IsNullOrEmpty(String.Join("", Row.ItemArray)); }).ForEach(Row =>
        { dt_Parsed.Rows.Remove(Row); });

这里有一个辅助函数,在这个函数中传递你想要删除所有空列的datarow的表(这里我假设所有字符串都是字符串类型,然后它将工作)对于其他类型,您可以先检查数据列类型,然后再进行相关检查。

 public DataTable DeleteEmptyRows(DataTable dt)
            {
                DataTable formattedTable = dt.Copy();
                List<DataRow> drList = new List<DataRow>();
                foreach (DataRow dr in formattedTable.Rows)
                {
                    int count = dr.ItemArray.Length;
                    int nullcounter=0;
                    for (int i = 0; i < dr.ItemArray.Length; i++)
                    {
                        if (dr.ItemArray[i] == null || string.IsNullOrEmpty(Convert.ToString(dr.ItemArray[i])))
                        {
                            nullcounter++;
                        }
                    }
                    if (nullcounter == count)
                    {
                        drList.Add(dr);
                    }
                }
                for (int i = 0; i < drList.Count; i++)
                {
                    formattedTable.Rows.Remove(drList[i]);
                }
                formattedTable.AcceptChanges();
                return formattedTable;
            }

您可以尝试使用以下方法在DataSet中循环数据表:

    public void Clear_DataTableEmptyRows(DataTable dataTableControl)
    {
        for (int i = dataTableControl.Rows.Count - 1; i >= 0; i--)
        {
            DataRow currentRow = dataTableControl.Rows[i];
            foreach (var colValue in currentRow.ItemArray)
            {
                if (!string.IsNullOrEmpty(colValue.ToString()))
                    break;
                dataTableControl.Rows[i].Delete();
                break;
            }
        }
    }