从dataTable中删除包含null值的行

本文关键字:null 包含 dataTable 删除 | 更新日期: 2023-09-27 18:20:53

我有一个包含7800行的DataTable,每行包含3列,如果第二列为Null,则可能具有Null值。我正在删除整行。问题是,即使我正在删除该行,DataTable仍包含相同数量的行号。希望为7800

代码:

 string query = "Select STORE_NAME, STORE_LATITUDE, STORE_LONGTITUDE "
  +" From stores inner join contact_information on stores.STORE_ID=contact_information.CONTACT_ID "
    +" where CONTACT_TYPE_ID=1 "
      +" AND CONTACT_COUNTRY_ID="+Country
         +" AND CONTACT_CASA_ID="+Casa
            +" AND CONTACT_TOWN_ID="+Town;
    DataTable dt = new SQLHelper(SQLHelper.ConnectionStrings.KernelConnectionString).getQueryResult(query);
    dt = removeNullColumnFromDataTable(dt);

功能:

    public static DataTable removeNullColumnFromDataTable(DataTable dt)
   {
    for (int i = dt.Rows.Count - 1; i >= 0; i--)
      {
       if (dt.Rows[i][1].ToString() == null)
           dt.Rows[i].Delete();
      }
     return dt;
   }

从dataTable中删除包含null值的行

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();
}

您可以将第一行更改为(对于sql server):

string query = "Select STORE_NAME, isnull(STORE_LATITUDE,'') as STORE_LATITUDE, STORE_LONGTITUDE "

只需检查空字符串(如果字段类型为char、varchar…等)

dt.Rows[i][1].ToString() == ""

或者使用isull(STORE_LATITUDE,0)并检查零dt。Rows[i][1].ToString()=="0"如果字段类型为数字

List<DataRow> changedNotNull = (from r1 in changed
                                where r1.ItemArray[0] != DBNull.Value
                                select r1).ToList();

帮我耍了花招!