2013-07-04 4 views
2

У меня есть DataTable, который содержит 7800 строк, каждая строка содержит 3 столбца, которые могут иметь значения Null, если второй столбец равен нулю. Я удаляю всю строку, проблема в том, что даже когда я удаляю строка Объект DataTable все еще содержат одинаковое количество строк чисел желания 7800Удалить строки, содержащие нулевое значение из dataTable

код:

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; 
    } 
+0

'dt.Rows [i] [1]. ToString() == "") 'не будет работать. «" это не то же самое, что и null. – Tim

+0

Я меняю его на нуль, но он все тот же – Sora

ответ

6
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

удаляет строку, но число DataTable все равно такое же – Sora

+0

да, что я выясняю :) thank u – Sora

+0

Я добавил 'dt.AcceptChanges();' :) –

1

вы можете изменить первую строку этого (для SQL Server):

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

и просто проверить на пустую строку (если тип поля CHAR, VARCHAR ... и т.д ..)

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

или используйте isnull (STORE_LATITUDE, 0) и проверьте нуль dt.Rows [i] [1] .ToString() == "0", если тип поля является числовым

+0

sql сервер меняет нулевое значение на ноль, поэтому я вроде застрял с той же проблемой – Sora

+0

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

+0

wait - какой тип поля STORE_LATITUDE? – sqladmin

Смежные вопросы