2009-04-01 2 views
11

Ich habe eine DataTable resultSet; - Ich versuche Felder für Null zu überprüfen, aber ein '{}' (leeres Set?) Objekt zurück zu bekommen. Suchvorgänge mit "{}" liefern keine geeigneten Lösungen.C# DataTable ItemArray gibt '{}' zurück - wie kann ich auf Null-Wert testen?

Dies ist der Code, der wie erwartet funktioniert nicht, wenn die „fk_id“ Feld null ist:

if (resultSet.Rows[0].ItemArray[resultSet.Columns.IndexOf("fk_id")] == null) 
{ 
    //never reaches here 
} 

Hinweis: einen int Index anstelle des Columns.IndexOf() verwendet, ist nicht das Problem.

Hat die "{}" auch einen anderen Namen in C#?

Antwort

18

Um eine Spalte für DBNull in einem Datensatz zu überprüfen, können Sie die IsNull Methode verwenden:

if (resultSet.Rows[0].IsNull("fk_id")) 

Ihr Vergleich gegen null wahrscheinlich versagt, weil Datasets eine „Datenbank NULL“ Wert zu repräsentieren nicht null verwenden - Sie verwenden DBNull.Value. Wenn Sie Ihren Code müssen die Art und Weise arbeiten Sie es vorgestellt haben, versuchen Sie dies:

if (resultSet.Rows[0].ItemArray[resultSet.Columns.IndexOf("fk_id")] == DBNull.Value) 
+0

Tolles Dankeschön, komplett vergessen "DBNull.Value" - es ist schon eine Weile her, seit ich Datensätze bearbeitet habe –

+0

Ich frage mich, warum sie es so entworfen haben, anstatt nur null zu verwenden? –

+2

@ k.rob Da es in .NET 1.0 keine Nullable gab, gab es keine Möglichkeit, einen Int32-Wert von "null" darzustellen. –

-2
try 
{ 
    if (DT.Rows[0][0] != null) 
    {  
     //your code 
    }  
}  
catch  
{  
    MessageBox.Show("AUTHANICATION FAILED.");  
} 
-2

Bitte verwenden:

dataTable.Select("FieldName is NULL") 

dies wird Ihnen die DataRows mit Nullwerten in Spalte Feldname .

Verwandte Themen