internal override IEnumerable <TResult> AdaptResult(string cql, RowSet rs) { IEnumerable <TSource> sourceData = _source.AdaptResult(cql, rs).ToArray(); var func = _projectionExpression.Compile(); return(sourceData.Select(func)); }
internal override IEnumerable <TResult> AdaptResult(string cql, RowSet rs) { IEnumerable <TResult> result; if (!_canCompile) { var mapper = MapperFactory.GetMapperWithProjection <TResult>(cql, rs, _projectionExpression); result = rs.Select(mapper); } else { IEnumerable <TSource> sourceData = _source.AdaptResult(cql, rs); var func = _projectionExpression.Compile(); result = sourceData.Select(func); } var enumerator = result.GetEnumerator(); // Eagerly evaluate the first one in order to fail fast var hasFirstItem = enumerator.MoveNext(); return(YieldFromFirst(enumerator, hasFirstItem)); }