NHibernate输出CreateQuery()的列/投影.list()

时间:2010-08-29 23:35:17

标签: c# nhibernate

我有简单的HQL查询:

var list = OpenSession()
              .CreateQuery("SELECT MAX(p.price) as max_price, 
                                   COUNT(p.id) as count_all 
                            FROM Order o left join o.Products p")
              .List();

我想尽可能简单地输出“max_price”和“count_all”列/投影。

类似的东西:

Console.WriteLine(list[0]["max_price"]);
Console.WriteLine(list[0]["count_all]);

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

您可以将其转换为Hashtable

.SetResultTransformer(Transformers.AliasToEntityMap).List<HashTable>()[0]["max_price"];

答案 1 :(得分:1)

不确定这一点,但我认为你需要创建一个类和项目。 这就是我从接近它开始的方式

class UserStatistics{
 MaxPrice {get; set;}
 CountAll {get; set;}
}

var list = OpenSession()
              .CreateQuery("SELECT MAX(p.price) as max_price, 
                                   COUNT(p.id) as count_all 
                            FROM Order o left join o.Products p")
              .SetResultTransformer(NHibernate.Transform.Transformers.AliasToBean(typeof(UserStatistics)))
              .List<UserStatistics>();

然后它应该是

的问题
Console.WriteLine(list[0].MaxPrice);
Console.WriteLine(list[0].CountAll);

Great Post explaining better.