jaki jest najlepszy sposób sprawdzenia, czy tabela danych zawiera wartość null?
W naszym scenariuszu przez większość czasu jedna kolumna będzie miała wszystkie wartości null.
(Ten plik danych jest zwracany przez aplikację innej firmy - próbujemy przeprowadzić walidację, zanim nasza aplikacja przetworzy tabelę danych)
Odpowiedzi:
Spróbuj porównać wartość kolumny z
DBNull.Value
wartością, aby przefiltrować i zarządzać wartościami null w dowolny sposób.foreach(DataRow row in table.Rows) { object value = row["ColumnName"]; if (value == DBNull.Value) // do something else // do something else }
Więcej informacji o klasie DBNull
Jeśli chcesz sprawdzić, czy w tabeli istnieje wartość null, możesz użyć tej metody:
public static bool HasNull(this DataTable table) { foreach (DataColumn column in table.Columns) { if (table.Rows.OfType<DataRow>().Any(r => r.IsNull(column))) return true; } return false; }
który pozwoli ci napisać to:
źródło
table.AsEnumerable()
zamiasttable.Rows.OfType<DataRow>()
foreach(DataRow row in dataTable.Rows) { if(row.IsNull("myColumn")) throw new Exception("Empty value!") }
źródło
Możesz zapętlić rzutowanie wierszy i kolumn, sprawdzanie wartości null, śledzenie, czy istnieje wartość null z wartością bool, a następnie sprawdzanie tego po przejściu przez pętlę tabeli i obsłużenie tego.
//your DataTable, replace with table get code DataTable table = new DataTable(); bool tableHasNull = false; foreach (DataRow row in table.Rows) { foreach (DataColumn col in table.Columns) { //test for null here if (row[col] == DBNull.Value) { tableHasNull = true; } } } if (tableHasNull) { //handle null in table }
Możesz także wyjść z pętli foreach za pomocą instrukcji break np
//test for null here if (row[col] == DBNull.Value) { tableHasNull = true; break; }
Aby zaoszczędzić na przechodzeniu przez pozostałą część tabeli.
źródło
Zrobię to ....
(!DBNull.Value.Equals(dataSet.Tables[6].Rows[0]["_id"]))
źródło
Możesz wyzerować / puste / spacja wartość Etc używając LinQ Użyj następującego zapytania
var BlankValueRows = (from dr1 in Dt.AsEnumerable() where dr1["Columnname"].ToString() == "" || dr1["Columnname"].ToString() == "" || dr1["Columnname"].ToString() == "" select Columnname);
Wymienić tu ColumnName z nazwy kolumny tabeli i „” przedmiot szukaj w powyższym kodzie szukamy wartość zerową.
źródło
DataTable dt = new DataTable(); foreach (DataRow dr in dt.Rows) { if (dr["Column_Name"] == DBNull.Value) { //Do something } else { //Do something } }
źródło