У меня есть этот запрос 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 для провайдера 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.) + 99
NHibernate.Hql., String collectionRole, Boolean shallow, фильтры IDictionary 2 filters, ISessionFactoryImplementor factory) +320<br>
NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory.CreateQueryTranslators(String
queryIdentifier, IQueryExpression queryExpression, String
collectionRole, Boolean shallow, IDictionary
2, фабрика ISessionFactoryImplementor) + 66
NHibernate.Engine.Query.HQLExpressionQueryPlan.CreateTranslators (String expressionStr, IQueryExpression queryExpression, String collectionRole, Boolean shallow, IDictionary 2 enabledFilters,
ISessionFactoryImplementor factory) +86<br>
NHibernate.Engine.Query.HQLExpressionQueryPlan..ctor(String
expressionStr, IQueryExpression queryExpression, String
collectionRole, Boolean shallow, IDictionary
2 enabledFilters, фабрика ISessionFactoryImplementor) + 63
NHibernate.Engine.Query.HQLExpressionQueryPlan..ctor (запрос на выражение строки String expressionStr, запрос на выражение логики, строковое выражение String2 enabledFilters, ISessionFactoryImplementor factory) +53
NHibernate.Engine.Query.QueryPlanCache.GetHQLQueryPlan(IQueryExpression
queryExpression, Boolean shallow, IDictionary
2 enabledFilters) + 249
NHibernate.NhQueryProvider.PrepareQuery (Выражение выражения, IQuery & query, NhLinqExpression & nhQuery) + 82
NHibernate.Linq.NhQueryProvider.Execute (выражение выражения) + 58
NHibernate.Linq.NhQueryProvideRemotion.Data.Linq.QueryableBase 1.GetEnumerator() +120<br>
System.Collections.Generic.List
1..ctor (IEnumerable 1 collection) +315
System.Linq.Enumerable.ToList(IEnumerable
1 source) + 58
Может кто-нибудь мне помочь?