/// <inheritdoc/> public override IQueryable<CallTreeNode> GetFunctions(int startIndex, int endIndex) { if (startIndex < 0 || startIndex >= DataSets.Count) throw new ArgumentOutOfRangeException("startIndex", startIndex, "Value must be between 0 and " + endIndex); if (endIndex < startIndex || endIndex >= DataSets.Count) throw new ArgumentOutOfRangeException("endIndex", endIndex, "Value must be between " + startIndex + " and " + (DataSets.Count - 1)); SQLiteQueryProvider queryProvider = new SQLiteQueryProvider(this, startIndex, endIndex); var query = queryProvider.CreateQuery(new Filter(AllCalls.Instance, DataSetFilter(startIndex, endIndex))); return query.Where(c => c.NameMapping.Id != 0 && !c.IsThread).MergeByName(); }
/// <inheritdoc/> public override CallTreeNode GetRoot(int startIndex, int endIndex) { if (startIndex > endIndex) { int help = startIndex; startIndex = endIndex; endIndex = help; } SQLiteQueryProvider queryProvider = new SQLiteQueryProvider(this, startIndex, endIndex); Expression<Func<SingleCall, bool>> filterLambda = c => c.ParentID == -1; return queryProvider.CreateQuery(new Filter(AllCalls.Instance, DataSetFilter(startIndex, endIndex), filterLambda)).Merge(); }