Best practice to check if DataRow contains a certain column
c#, dataset
Solution
I really liked the approach taken by @Varun K. So, having that as a departing point I just wanted to put my two cents, in case it helps someone else. I simply improved it making it generic instead of just using object as a return type.
static class Extensions
{
public static T Get<T>(this DataRow self, string column)
{
return self.Table.Columns.Contains(column)
? (T)self[column]
: default(T);
}
}
}
Problem
At the moment, when I iterate over the DataRow instances, I do this. ``` foreach(DataRow row in table) return yield new Thingy { Name = row["hazaa"] }; ``` Sooner of later (i.e. sooner), I'll get the table to be missing the column donkey and the poo will hit the fan. After some extensive googling (about 30 seconds) I discovered the following protection syntax. ``` foreach(DataRow row in table) if(row.Table.Columns.Contains("donkey")) return yield new Thingy { Name = row["hazaa"] }; else return null; ``` Now - is this the simplest syntax?! Really? I was expecting a method that gets me the field if it exists or null otherwise. Or at least a Contains method directly on the row. Am I missing something? I'll be mapping in many fields that way so the code will look dreadfully unreadable...