private IEnumerable <IDictionary <string, EntityProperty> > InternalQuery(string filterString, IList <string> selectColumns) { Debug.WriteLine($"Q: {filterString}"); var parseResult = FilterStringParser.Parse(filterString); if (!parseResult.Success) { throw new InvalidFilterString(parseResult.Error); } foreach (var row in _tableStore.GetAllRows(_table)) { if (!parseResult.Root.Execute(row, out string error)) { if (error != null) { throw new QueryFailed(error); } } else { if (selectColumns != null) { yield return(row.Where(p => selectColumns.Contains(p.Key)).ToDictionary(p => p.Key, p => p.Value)); } else { yield return(row); } } } }