DataRow ma właściwość Tabela, która odwołuje się do DataTable, z której pochodzi. DataTable ma właściwość Columns, która jest DataColumnCollection.
Wyliczenie tej listy pozwoli określić, czy tabela zawiera żądaną kolumnę. Zauważ, że wszystkie wiersze w tabeli mają identyczne kolumny.
np
bool containsColumn = row.Table.Columns.Any(column => column.ColumnName == "EmploymentID");
Warto zwrócić uwagę, że prawdopodobnie będziesz musiał sprawdzić równości do DBNull, chyba że jesteś w 100% pewien, że EmploymentID nigdy nie może zostać zwrócona wartość null.
Ponadto, jeśli kolumna EmploymentID jest wpisany jako liczba całkowita, wówczas można uniknąć żadnej potrzeby konwersji typów, za pomocą bezpośredniego Obsada:
EmploymentID = (int)row["EmploymentID"];
lub alternatywnie używać DataRowExtensions o wiele bardziej zwięzłą podejściu który ma wszystko null sprawdzanie dla Ciebie:
EmploymentID = row.Field<int?>("EmploymentID");
Jeśli EmploymentID nie jest pustych int, można łączyć wartości jak:
EmploymentID = row.Field<int?>("EmploymentID") ?? 0;
Dziękuję bardzo wiele będzie. Twoja odpowiedź jest świetna. –
@Hughes Brak metody rozszerzenia Any dla DataColumnCollection. Przynajmniej nie w .NET 4.0. – Irshad
@Irshad - [Any jest w przestrzeni nazw System.Linq] (https: //msdn.microsoft.com/en-us/library/vstudio/bb534972 \ (v = vs.100 \) .aspx), podpis "' ' public static bool Any (this IEnumerable source, Func predicate) '' ' –