通过将linq与NHibernate 3.0结合使用 [英] Group by using linq with NHibernate 3.0
问题描述
据我所知groupby仅在NHibernate 3.0中添加,但是即使使用版本3,我也无法使group by正常工作.
As far as I know group by has only been added in NHibernate 3.0, but even when using version 3, I can't get group by to work.
我尝试执行以下查询:
Session.Query().GroupBy(gbftr => gbftr.Tag).OrderByDescending(obftr => obftr.Count()).Take(count).ToList();
Session.Query().GroupBy(gbftr => gbftr.Tag).OrderByDescending(obftr => obftr.Count()).Take(count).ToList();
但是我收到以下错误:
Antlr.Runtime.NoViableAltException'. [. OrderByDescending (. GroupBy (NHibernate.Linq.NhQueryable `1 [Forum.Core.ForumTagRelation] Quote ((gbftr,) => (gbftr.Tag)),), Quote ((obftr,) => (. Count (obftr,))),)]
有人会知道我是否会误会,并且NHibernate 3.0中未实现分组依据,还是知道我可能在做错什么的人?
Does anyone have an idea if I might be mistaken, and group by isn't implemented in NHibernate 3.0, or who knows what I might be doing wrong?
推荐答案
GroupBy 可以工作,但是与其他运算符的组合却引起麻烦.
GroupBy does work, but it's the combination with other operators that is causing trouble.
例如,这有效:
session.Query<Foo>().GroupBy(x => x.Tag).Select(x => x.Count()).ToList();
但是,如果您尝试使用跳过/跳转至页面",则会失败.
But if you try to use Skip/Take to page, it fails.
简而言之:尚不支持某些构造.您可以对这些使用HQL.我建议您在 http://jira.nhforge.org
In short: some constructs are not supported yet; you can use HQL for those. I suggest you open an issue at http://jira.nhforge.org
这篇关于通过将linq与NHibernate 3.0结合使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!