internal object Query(Expression expression) { var opcode = LinqToSitecoreVisitor.GetCode(BooleanFixVisitor.Process <T>(expression), null, typeof(T)); var context = new QueryContext(_database.DataManager); var qTranslator = LinqToSitecoreExtensions.GetQueryTranslator(context, _database); var contextResult = qTranslator.QueryFast(_database, opcode); var data = contextResult; if (data is QueryContext[]) { return(((QueryContext[])data).Select(x => x.GetQueryContextItem().ReflectTo <T>(true)).ToList()); } return(new List <T> { ((QueryContext)data).GetQueryContextItem().ReflectTo <T>(true) }); }
internal static List <T> Query <T>(Database database, Expression <Func <T, bool> > query, bool lazyLoading, params string[] include) { var db = database ?? Context.Database; var opcode = LinqToSitecoreVisitor.GetCode(query, null, typeof(T)); var context = new QueryContext(db.DataManager); var qTranslator = GetQueryTranslator(context, db); var contextResult = qTranslator.QueryFast(db, opcode); var data = contextResult; if (data is QueryContext[]) { return(((QueryContext[])data).Select(x => x.GetQueryContextItem().ReflectTo <T>(lazyLoading, include)) .Where(query.Compile()).ToList()); } return(new List <T> { ((QueryContext)data).GetQueryContextItem().ReflectTo <T>(lazyLoading, include) }); }