Ejemplo n.º 1
0
        protected override Expression VisitBinary(BinaryExpression exp)
        {
            LeftOperator  = ToOperator(exp.Left);
            RightOperator = ToOperator(exp.Right);
            FieldType    dataType;
            CamlFieldRef fieldRef = GetFieldRef(out dataType);
            CamlValue    value    = GetValue(dataType);

            if (fieldRef == null)
            {
                return(exp);
            }
            switch (exp.NodeType)
            {
            case ExpressionType.Equal:
                if (exp.Right.IsNullValue())
                {
                    Operator = new Caml.Operators.IsNull(fieldRef);
                }
                else
                {
                    Operator = new Caml.Operators.Eq(fieldRef, value);
                }
                break;

            case ExpressionType.NotEqual:
                if (exp.Right.IsNullValue())
                {
                    Operator = new Caml.Operators.IsNotNull(fieldRef);
                }
                else
                {
                    Operator = new Caml.Operators.Neq(fieldRef, value);
                }
                break;

            case ExpressionType.GreaterThan:
                Operator = new Caml.Operators.Gt(fieldRef, value);
                break;

            case ExpressionType.GreaterThanOrEqual:
                Operator = new Caml.Operators.Geq(fieldRef, value);
                break;

            case ExpressionType.LessThan:
                Operator = new Caml.Operators.Lt(fieldRef, value);
                break;

            case ExpressionType.LessThanOrEqual:
                Operator = new Caml.Operators.Leq(fieldRef, value);
                break;

            //case ExpressionType.Convert:
            //    Visit(exp);
            //    break;
            default:
                throw new NotSupportedException($"{exp.NodeType} operator is not supported in LinqToSP.");
            }
            return(exp);
        }
        protected override Expression VisitMethodCall(MethodCallExpression node)
        {
            if ((node.Method.Name == "LookupIncludes" || node.Method.Name == "LookupIdIncludes") && typeof(ListItemEntityExtensions).IsAssignableFrom(node.Method.DeclaringType))
            {
                Visit(node.Object);
                foreach (var arg in node.Arguments)
                {
                    if (arg.NodeType == ExpressionType.Constant || arg.NodeType == ExpressionType.Lambda)
                    {
                        Visit(arg);
                    }
                }

                FieldType    dataType;
                CamlFieldRef fieldRef = GetFieldRef(out dataType);
                CamlValue    value    = GetValue(dataType);
                if (fieldRef == null || value == null)
                {
                    return(node);
                }
                if (node.Method.Name == "LookupIdIncludes")
                {
                    fieldRef.LookupId = true;
                }
                Operator = new Caml.Operators.Includes(fieldRef, value);
                return(node);
            }
            throw new NotSupportedException($"{node.NodeType} method is not supported in LinqToSP.");
        }
Ejemplo n.º 3
0
 protected FieldValueOperator(string operatorName, string fieldName, CamlValue <T> value)
     : base(operatorName, value)
 {
     FieldRef = new CamlFieldRef {
         Name = fieldName
     };
 }
Ejemplo n.º 4
0
        protected override Expression VisitMethodCall(MethodCallExpression node)
        {
            Expression expression = node;

            if (node.Method.Name == "Equals")
            {
                foreach (var arg in node.Arguments)
                {
                    Visit(arg);
                }

                FieldType    dataType;
                CamlFieldRef fieldRef = GetFieldRef(out dataType);
                CamlValue    value    = GetValue(dataType);

                Operator = new Caml.Operators.Eq(fieldRef, value);
            }
            else if (node.Method.Name == "NotEquals")
            {
                Visit(node.Object);
                foreach (var arg in node.Arguments)
                {
                    Visit(arg);
                }

                FieldType    dataType;
                CamlFieldRef fieldRef = GetFieldRef(out dataType);
                CamlValue    value    = GetValue(dataType);

                Operator = new Caml.Operators.Neq(fieldRef, value);
                //return null;
            }
            return(expression);
        }
Ejemplo n.º 5
0
        protected override Expression VisitMethodCall(MethodCallExpression node)
        {
            if (node.Method.Name == "DateRangesOverlap" && typeof(ListItemEntityExtensions).IsAssignableFrom(node.Method.DeclaringType))
            {
                Visit(node.Object);
                foreach (var arg in node.Arguments)
                {
                    if (arg.NodeType == ExpressionType.Constant || arg.NodeType == ExpressionType.Lambda)
                    {
                        Visit(arg);
                    }
                }

                FieldType    dataType;
                CamlFieldRef startTimeFieldRef      = GetFieldRef(StartTimeFieldName, out dataType);
                CamlFieldRef endTimeFieldRef        = GetFieldRef(EndTimeFieldName, out dataType);
                CamlFieldRef recurrenceDataFieldRef = GetFieldRef(RecurrenceDataFieldName, out dataType);
                CamlValue    value = GetValue(Microsoft.SharePoint.Client.FieldType.DateTime);
                value.IncludeTimeValue = null;

                if (startTimeFieldRef == null || endTimeFieldRef == null || recurrenceDataFieldRef == null || value == null)
                {
                    return(node);
                }

                Operator = new Caml.Operators.DateRangesOverlap(startTimeFieldRef, endTimeFieldRef, recurrenceDataFieldRef, value);
                return(node);
            }
            throw new NotSupportedException($"{node.NodeType} method is not supported in LinqToSP.");
        }
Ejemplo n.º 6
0
 protected FieldValueOperator(string operatorName, Guid fieldId, CamlValue <T> value)
     : base(operatorName, value)
 {
     FieldRef = new CamlFieldRef {
         Id = fieldId
     };
 }
Ejemplo n.º 7
0
 protected ValueOperator(string operatorName, CamlValue <T> value)
     : base(operatorName)
 {
     if (value == null)
     {
         throw new ArgumentNullException("value");
     }
     Value = value;
 }
Ejemplo n.º 8
0
 protected ValueOperator(string operatorName, T value, FieldType type)
     : base(operatorName)
 {
     if (value is CamlValue <T> )
     {
         Value = value as CamlValue <T>;
     }
     else
     {
         Value = new CamlValue <T>(value, type);
     }
 }
        protected override Expression VisitMethodCall(MethodCallExpression node)
        {
            if (node.Method.Name == "StartsWith")
            {
                Visit(node.Object);
                foreach (var arg in node.Arguments)
                {
                    Visit(arg);
                }

                FieldType    dataType;
                CamlFieldRef fieldRef = GetFieldRef(out dataType);
                CamlValue    value    = GetValue(dataType);
                if (fieldRef == null)
                {
                    return(node);
                }

                Operator = new Caml.Operators.BeginsWith(fieldRef, value);
                return(node);
            }
            throw new NotSupportedException($"{node.NodeType} method is not supported in LinqToSP.");
        }
Ejemplo n.º 10
0
 protected FieldValueOperator(string operatorName, CamlFieldRef fieldRef, CamlValue <T> value)
     : base(operatorName, value)
 {
     FieldRef = fieldRef;
 }
Ejemplo n.º 11
0
 protected override void OnParsing(XElement existingValueOperator)
 {
     Value = new CamlValue <T>(existingValueOperator);
 }
Ejemplo n.º 12
0
 public Lt(CamlFieldRef fieldRef, CamlValue <object> value) : base(fieldRef, value)
 {
 }
Ejemplo n.º 13
0
 public Includes(CamlFieldRef fieldRef, CamlValue <object> value) : base(fieldRef, value)
 {
 }
Ejemplo n.º 14
0
 public Contains(CamlFieldRef fieldRef, CamlValue <string> value)
     : base(fieldRef, value)
 {
 }
Ejemplo n.º 15
0
 public DateRangesOverlap(Guid startField, Guid endField, Guid recurrenceIdField, CamlValue value)
     : base(DateRangesOverlapTag, new[] { startField, endField, recurrenceIdField }, value, FieldType.DateTime)
 {
 }
Ejemplo n.º 16
0
 public DateRangesOverlap(string startField, string endField, string recurrenceIdField, CamlValue <DateTime> value)
     : base(DateRangesOverlapTag, new[] { startField, endField, recurrenceIdField }, value, FieldType.DateTime)
 {
 }
Ejemplo n.º 17
0
 public BeginsWith(CamlFieldRef fieldRef, CamlValue value)
     : base(fieldRef, value)
 {
 }