示例#1
0
        private static PredyLambdaExpression SerializeLambda(LambdaExpression exp, Type type = null)
        {
            PredyLambdaExpression predyLambda = new PredyLambdaExpression
            {
                Body       = SerializeInternal(exp.Body),
                Parameters = exp.Parameters.Select(SerializeParameter).ToList(),
                Type       = type
            };

            return(predyLambda);
        }
示例#2
0
        public static void WriteLambda(JsonWriter writer, PredyLambdaExpression value, JsonSerializer serializer)
        {
            JObject jObject = new JObject
            {
                ["ExType"] = JToken.FromObject(PredyExpressions.Lambda),
                [nameof(PredyLambdaExpression.Body)]       = JToken.FromObject(value.Body, serializer),
                [nameof(PredyLambdaExpression.Parameters)] = JToken.FromObject(value.Parameters, serializer),
                [nameof(PredyLambdaExpression.Type)]       = JToken.FromObject(value.Type, serializer)
            };

            jObject.WriteTo(writer);
        }
示例#3
0
        private static void Main(string[] args)
        {
            IEnumerable <Person> persons = new List <Person>
            {
                new Person {
                    Name = "Emre", Lastname = "Hizli", Age = 29
                },
                new Person {
                    Name = "Tony", Lastname = "Stark", Age = 40
                },
                new Person {
                    Name = "Karen", Lastname = "Hizli", Age = 1
                }
            };

            Expression <Func <Person, bool> > predicate = m => m.Age > 10 && m.Name.StartsWith("Em");

            PredyLambdaExpression serialized = predicate.Serialize();                                                               // Serialize with predy
            string json = JsonConvert.SerializeObject(serialized);                                                                  // Convert to json
            PredyLambdaExpression             deserializedJson = JsonConvert.DeserializeObject <PredyLambdaExpression>(json);       // Deserialize to predy
            Expression <Func <Person, bool> > deserialized     = (Expression <Func <Person, bool> >)deserializedJson.Deserialize(); // Deserialize to lambda with predy

            List <Person> result = persons.Where(deserialized.Compile()).ToList();                                                  // Compile and use
        }
示例#4
0
        private static LambdaExpression DeserializeLambda(PredyLambdaExpression lambdaPredy)
        {
            Expression body = DeserializeInternal(lambdaPredy.Body);

            return(Expression.Lambda(body, _visitor.GetParameters(lambdaPredy.Parameters)));
        }
示例#5
0
 public static LambdaExpression Deserialize(PredyLambdaExpression predy)
 {
     _visitor = new PredyParameterVisitor();
     return(DeserializeLambda(predy));
 }
示例#6
0
 public static LambdaExpression Deserialize(this PredyLambdaExpression predy)
 {
     return(PredyConverter.Deserialize(predy));
 }