public override PostProjectionLoadedResult GetResult(IUnprojectedBinding binding, List <object> resultSet)
        {
            var result = new PostProjectionLoadedResult();

            result.ProjectionBinding = binding;

            var m2mRelationship = GetManyToManyRelationship(binding as UnprojectedManyToManyBinding);

            Func <AnonymousType, object> valueGetter =
                ao => Get_GetProjectedValue_Computation(binding.TargetBinding)(new TableEntityRow(ao));

            var query = GetQuery(resultSet, valueGetter, m2mRelationship.MapType);

            var includes = ModifyExpressions(GetIncludes(binding)
                                             , m2mRelationship.RelatedEntitySelectorFromMap.Body as MemberExpression);

            //loading both ends of the map object
            includes.AddRange(new[] { m2mRelationship.RelatedEntitySelectorFromMap, m2mRelationship.SelfSelectorFromMap });


            query        = LoadIncludes(query, m2mRelationship.MapType, includes);
            result.Value = MethodFinder.EnumerableMethods.ToList(m2mRelationship.MapType).Invoke(null, new object[] { query }) as IList;

            return(result);
        }
        public override PostProjectionLoadedResult GetResult(IUnprojectedBinding binding, List <object> objects)
        {
            var result = new PostProjectionLoadedResult();

            result.ProjectionBinding = binding;

            var targetType = TypesUtil.GetGenericArgumentForBaseType(binding.TargetBinding.Type, typeof(IEnumerable <>));

            Func <AnonymousType, object> valueGetter =
                ao => Get_GetProjectedValue_Computation(binding.TargetBinding)(new TableEntityRow(ao));

            var query = GetQuery(objects, valueGetter, targetType);

            query        = LoadIncludes(query, targetType, GetIncludes(binding));
            result.Value = MethodFinder.EnumerableMethods.ToList(targetType).Invoke(null, new object[] { query }) as IList;

            return(result);
        }