internal Result <object> Query(string filter, int start, int count, string orderby) { filter = filter.Trim(); if (filter == "") { return(Query(start, count, orderby)); } DateTime dt = FastDateTime.Now; _log.Debug("query : " + _view.Name); _log.Debug("query : " + filter); _log.Debug("orderby : " + orderby); WAHBitArray ba = new WAHBitArray(); var delbits = _deletedRows.GetBits(); if (filter != "") { LambdaExpression le = null; if (_lambdacache.TryGetValue(filter, out le) == false) { le = System.Linq.Dynamic.DynamicExpression.ParseLambda(_view.Schema, typeof(bool), filter, null); _lambdacache.Add(filter, le); } QueryVisitor qv = new QueryVisitor(QueryColumnExpression); qv.Visit(le.Body); ba = ((WAHBitArray)qv._bitmap.Pop()).AndNot(delbits); } else { ba = WAHBitArray.Fill(_viewData.Count()).AndNot(delbits); } var order = SortBy(orderby); _log.Debug("query bitmap done (ms) : " + FastDateTime.Now.Subtract(dt).TotalMilliseconds); dt = FastDateTime.Now; // exec query return rows return(ReturnRows <object>(ba, null, start, count, order)); }