public EnumerateFactory <TItem> Compile <TItem>(EnumerateResult result) { List <Expression> body = new List <Expression>(); if (result.Value == null) { return(_ => default);
public EnumerateResult Parse(IEnumerable <ColumnAttribute> header) { NodeTree nodeTree = NodeParser.Parse(this.Schema, header); Node valueNode = nodeTree.Items.FirstOrDefault(this.IsResultNode); Node listNode = nodeTree.Items.FirstOrDefault(this.IsResultListNode); EnumerateResult result = new EnumerateResult(this.Schema); result.Value = this.CreateReader(result, listNode ?? valueNode); return(result); }
public static EnumerateFactory <T> GetEnumerateFactory <T>(ISchema schema, IDataRecord header) { ColumnCacheKey cacheKey = GetCacheKey(schema, QueryType.List, header); return((EnumerateFactory <T>)enumerateMap.GetOrAdd(cacheKey, k => { EnumerateParser parser = new EnumerateParser(schema); EnumerateResult result = parser.Parse(k.Header); QueryCompiler compiler = new QueryCompiler(); return compiler.Compile <T>(result); })); }