Vous pouvez l'obtenir avec
var var1 = datareader.GetString(reader.GetOrdinal("something"));
Habituellement GetString veut un entier qui représente la position de la colonne dans le jeu d'enregistrements retourné. Mais tout fournisseur spécifique peut étendre GetString pour obtenir directement la valeur de la valeur de chaîne (comme le fournisseur de MySql), mais s'ils ne fournissent pas cette extension, vous devez utiliser le modèle qui nécessite l'utilisation de GetOrdinal. Bien sûr, vous pourriez écrire l'extension vous-même. Il suffit d'ajouter cette méthode dans une classe statique
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));
}
et maintenant, votre façon d'appeler GetString fonctionnera.