Sie können es mit
var var1 = datareader.GetString(reader.GetOrdinal("something"));
Normalerweise will GetString eine ganze Zahl, die die Position der Spalte in der zurück-Cord repräsentieren. Aber jeder spezifische Provider kann GetString erweitern, um den Wert direkt aus dem String-Wert zu erhalten (wie der Provider für MySql tut), aber wenn sie diese Erweiterung nicht bereitstellen, müssen Sie das Pattern verwenden, das die Verwendung von GetOrdinal benötigt Natürlich könnten Sie die Erweiterung selbst schreiben. Fügen Sie diese Methode einfach in eine statische Klasse
public static object GetString(this NpgsqlDataReader source, string colname)
{
if(string.IsNullOrEmpty(colname))
throw ArgumentException("Need a column name");
return source.GetString(source.GetOrdinal(colname));
}
und jetzt, Ihre Methode zum Aufruf von GetString wird funktionieren.