2010-12-08 19 views
0

Ma requête sera quelque chose comme:NHibernate: Comment récupérer les données de IQuery.List() en utilisant le nom du champ?

string query = " select a.CustomerName , b.ProductName from Customer as a join a.Product as b " 

IQuery query = applicationSession.CreateQuery(query); 
IList listResult = query.List(); 

Cela renverra les noms des clients et les noms de produits. Mais ce que je veux faire est quelque chose comme:

string customerName = listResult[0]["CustomerName"]; 
string productName = listResult[0]["ProductName"]; 

Quelqu'un pourrait-il me donner une aide sur la façon dont je peux faire cela?

+0

Veuillez [ne pas utiliser de signatures ou de slogans] (http://stackoverflow.com/faq#signatures) dans vos publications. – meagar

Répondre

4

Vous pouvez appliquer un transformateur à Hashtable:

string query = "select a.CustomerName as CustomerName, b.ProductName as ProductName from Customer as a join a.Product as b" 

IQuery query = applicationSession.CreateQuery(query); 
var listResult = query.SetResultTransformer(NHibernate.Transform.Transformers.AliasToEntityMap).List<Hashtable>(); 


string customerName = (string)listResult[0]["CustomerName"]; 
string productName = (string)listResult[0]["ProductName"]; 

S'il vous plaît noter que j'ai ajouté des alias à votre requête d'origine pour faire travailler le AliasToEntityMap.

+0

merci! Ça marche. – TMS