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));
        }
示例#2
0
        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));
        }