So überprüfen Sie, ob eine Spalte in einer Datentabelle vorhanden ist


90

Ich habe eine Datendatei mit dem Inhalt einer CSV-Datei generiert. Ich verwende andere Informationen, um eine Spalte der CSV (jetzt in der Datentabelle) Informationen zuzuordnen, die der Benutzer ausfüllen muss.

In der besten Welt wäre die Kartierung immer möglich. Aber das ist nicht die Realität ... Bevor ich versuche, den datierbaren Spaltenwert zuzuordnen, müsste ich überprüfen, ob diese Spalte überhaupt existiert. Wenn ich diese Prüfung nicht durchführe, habe ich eine ArgumentException.

Natürlich kann ich das mit einem Code wie diesem überprüfen:

try
{
    //try to map here.
}
catch (ArgumentException)
{ }

aber ich habe vorerst 3 Spalten zuzuordnen und einige oder alle könnten vorhanden sein / fehlen

Gibt es eine gute Möglichkeit zu überprüfen, ob eine Spalte in einer Datentabelle vorhanden ist?


Hast du es mit einem DataSet/ zu tun DataTable? In diesem Fall können Sie in der Spaltenauflistung der Tabelle eine Liste aller Spalten in der Tabelle anzeigen.
Asawyer

Ja, @asawyer, der Inhalt der CSV wird in einer Datentabelle gespeichert. Ich werde in diese Richtung schauen.
Rémi

Antworten:


190

Sie können verwenden operator Contains,

private void ContainColumn(string columnName, DataTable table)
{
    DataColumnCollection columns = table.Columns;        
    if (columns.Contains(columnName))
    {
       ....
    }
}

MSDN - DataColumnCollection.Contains ()


Bist du sicher, dass dies Linq ist? Ich habe keinen Verweis auf linq in meinem Code und dieser Arbeit
Rémi

Es ist Operator einfach von Spalten
Aghilas Yakoub

Dies ist keine linq-Erweiterungsmethode, sondern ein Mitglied des DataColumnCollection-Typs, würde aber auch gut funktionieren.
Asawyer

5
@AghilasYakoub Sicher ist, ich habe das vergessen. Wahrscheinlich auch in diesem Fall der bessere Weg. Eines jedoch: "Sie können den Operator Contains verwenden" - Es handelt sich nicht um einen Operator, sondern um eine Member-Methode.
Asawyer


8

Für mehrere Spalten können Sie Code verwenden, der dem unten angegebenen ähnlich ist. Ich habe dies gerade durchgearbeitet und eine Antwort gefunden, um mehrere Spalten in Datatable zu überprüfen.

 private bool IsAllColumnExist(DataTable tableNameToCheck, List<string> columnsNames)
    {
        bool iscolumnExist = true;
        try
        {
            if (null != tableNameToCheck && tableNameToCheck.Columns != null)
            {
                foreach (string columnName in columnsNames)
                {
                    if (!tableNameToCheck.Columns.Contains(columnName))
                    {
                        iscolumnExist = false;
                        break;
                    }
                }
            }
            else
            {
                iscolumnExist = false;
            }
        }            
        catch (Exception ex)
        {

        }
        return iscolumnExist;
    }


0
DataColumnCollection col = datatable.Columns;        
if (!columns.Contains("ColumnName1"))
{
   //Column1 Not Exists
}

if (columns.Contains("ColumnName2"))
{
   //Column2 Exists
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.