Obtenir les noms de champs de la procédure stockée avec Dapper

.net dapper

Question

J'exécute une procédure stockée avec Dapper comme ceci:

var sprocResult = conn.Query("TestSproc", new {clientID = 2}, commandType: CommandType.StoredProcedure).ToList();

Je peux énumérer les résultats et lister les valeurs. Ce que je dois pouvoir faire cependant, c'est aussi énumérer les noms de champs qui reviennent du sproc. Je ne connaîtrai pas ces noms de champs à la conception.

Merci d'avance.

Réponse acceptée

Lorsque vous utilisez l'API dynamic (la Query(...) au lieu de la Query<T>(...) , selon votre exemple), chaque ligne implémente également IDictionary<string,object> . Donc en gros:

foreach(IDictionary<string,object> row in sprocResult)
{
    var colNames = row.Keys;
    //...
}

Réponse populaire

Si la requête ne peut retourner aucune ligne, la Query().First().Keys ne fonctionnent pas. Dans ce cas, vous pouvez utiliser ExecuteReader().GetName(i) .




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi