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); }