【发布时间】:2011-10-15 13:35:15
【问题描述】:
我有这个 Linq 查询:
var query = (from i in session.Query<Photo>()
where i.IsApproved == true
select i);
if (topPhotoEnum.Equals(TimeModeEnum.Today))
query = query.Where(x => x.UploadDate >= DateTime.Today
&& x.UploadDate <= DateTime.Now);
//return query.OrderByDescending(x => x.Votes.Count).Take(number).ToList();
return query.ToList()
.OrderByDescending(x => x.Votes.Count).Take(number).ToList();
这里的问题是我从数据库中检索所有数据,然后我调用OrderByDescending 和Take 来过滤数据。
我更愿意让数据库过滤数据,但似乎 Linq to NHibernate 提供程序不支持.OrderByDescending(x => x.Votes.Count),因为它是一个子集合操作。
Antlr.Runtime.NoViableAltException
NHibernate.Hql.Ast.ANTLR.ErrorCounter.ThrowQueryException() +100
NHibernate.Hql.Ast.ANTLR.HqlSqlTranslator.Translate() +305
NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.Analyze(字符串 收藏角色)+99
NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.DoCompile(IDictionary2 replacements, Boolean shallow, String collectionRole) +5612 替换,布尔浅)+44
NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.Compile(IDictionary
NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory.CreateQueryTranslators(IASTNode ast, String queryIdentifier, String collectionRole, Boolean shallow, IDictionary2 filters, ISessionFactoryImplementor factory) +3202 过滤器, ISessionFactoryImplementor 工厂)+66
NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory.CreateQueryTranslators(String queryIdentifier, IQueryExpression queryExpression, String collectionRole, Boolean shallow, IDictionary
NHibernate.Engine.Query.HQLExpressionQueryPlan.CreateTranslators(字符串 expressionStr, IQueryExpression queryExpression, String collectionRole, Boolean shallow, IDictionary2 enabledFilters, ISessionFactoryImplementor factory) +862 enabledFilters, ISessionFactoryImplementor 工厂)+63
NHibernate.Engine.Query.HQLExpressionQueryPlan..ctor(String expressionStr, IQueryExpression queryExpression, String collectionRole, Boolean shallow, IDictionary
NHibernate.Engine.Query.HQLExpressionQueryPlan..ctor(字符串 expressionStr, IQueryExpression queryExpression, Boolean shallow, IDictionary2 enabledFilters, ISessionFactoryImplementor factory) +53 NHibernate.Engine.Query.QueryPlanCache.GetHQLQueryPlan(IQueryExpression queryExpression, Boolean shallow, IDictionary2 enabledFilters) +249
NHibernate.Impl.AbstractSessionImpl.GetHQLQueryPlan(IQueryExpression queryExpression,布尔浅)+185
NHibernate.Impl.AbstractSessionImpl.CreateQuery(IQueryExpression 查询表达式)+158
NHibernate.Linq.NhQueryProvider.PrepareQuery(表达式表达式, IQuery&查询,NhLinqExpression&nhQuery) +82
NHibernate.Linq.NhQueryProvider.Execute(表达式表达式) +58
NHibernate.Linq.NhQueryProvider.Execute(表达式表达式) +43
Remotion.Data.Linq.QueryableBase1.GetEnumerator() +1201..ctor(IEnumerable
System.Collections.Generic.List1 collection) +315 System.Linq.Enumerable.ToList(IEnumerable1 源) +58
有人可以帮我吗?
【问题讨论】:
标签: c# .net nhibernate linq-to-nhibernate