Esempio n. 1
0
        private static object ProjectResult <TResult>(IEnumerable <TResult> items, SPModelQueryExecuteMode executeMode)
        {
            switch (executeMode)
            {
            case SPModelQueryExecuteMode.FirstOrDefault:
            case SPModelQueryExecuteMode.ElementAtOrDefault:
                return(items.FirstOrDefault());

            case SPModelQueryExecuteMode.First:
            case SPModelQueryExecuteMode.ElementAt:
                return(items.First());

            case SPModelQueryExecuteMode.SingleOrDefault:
                return(items.SingleOrDefault());

            case SPModelQueryExecuteMode.Single:
                return(items.Single());

            case SPModelQueryExecuteMode.Any:
            case SPModelQueryExecuteMode.All:
                return(items.Any());

            default:
                return(items);
            }
        }
Esempio n. 2
0
        private SPModelParameterizedQuery(ParameterizedExpression expression, ISPModelManagerInternal manager)
        {
            SPModelQueryBuilder builder = SPModelQueryExpressionVisitor.Translate(expression, manager);

            this.Descriptor = builder.ModelType != null?SPModelDescriptor.Resolve(builder.ModelType) : manager.Descriptor;

            this.Expression     = builder.Expression;
            this.TaxonomyFields = new ReadOnlyCollection <string>(builder.TaxonomyFields.ToArray());

            this.expression  = expression;
            this.executeMode = builder.ExecuteMode;
            this.emptyArray  = Array.CreateInstance(this.Descriptor.ModelType, 0);
            if (builder.SelectExpression != null)
            {
                this.projector = ((Expression <ResultEvaluator>)builder.SelectExpression).Compile();
            }
            else
            {
                this.projector = (ResultEvaluator)Delegate.CreateDelegate(typeof(ResultEvaluator), mOfType.MakeGenericMethod(this.Descriptor.ModelType));
            }
            this.evaluators = new ReadOnlyDictionary <string, ParameterEvaluator>(builder.ParameterEvaluators);
            for (int i = 0; i < PIndexMax; i++)
            {
                parameterNames[i] = (string)builder.Parameters[i];
            }

            if (builder.ModelType != null)
            {
                this.ContentTypeFilterExpression = builder.ContentTypeIds.Aggregate(Caml.False, (v, a) => v | Caml.OfContentType(a));
            }
            if (!builder.SelectAllProperties)
            {
                List <string> properties = new List <string>(builder.SelectProperties);
                if (!properties.Contains(SPBuiltInFieldName.ContentTypeId))
                {
                    properties.Add(SPBuiltInFieldName.ContentTypeId);
                }
                this.SelectProperties = new ReadOnlyCollection <string>(properties);
            }
        }
Esempio n. 3
0
 private static object ProjectResultWithSelector <TSource, TResult>(IEnumerable <TSource> items, Func <TSource, TResult> selector, SPModelQueryExecuteMode executeMode)
 {
     return(ProjectResult(items.Select(selector), executeMode));
 }