DataReader.GetString() via columnname
You’re looking for the GetOrdinal method: this._MyField1 = reader.GetString(dr.GetOrdinal(“field1”)); this._Myfield2 = reader.GetInt16(dr.GetOrdinal(“field2”)); I generally cache the ordinals in an anonymous type for performance and readability: // … using (IDataReader dr = cmd.ExecuteReader()) { var ordinals = new { Foo = dr.GetOrdinal(“Foo”), Bar = dr.GetOrdinal(“Bar”) }; while (dr.Read()) { DoSomething(dr.GetString(ordinals.Foo), dr.GetInt16(ordinals.Bar)); } } // …