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); }
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); }
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 }
private static LambdaExpression DeserializeLambda(PredyLambdaExpression lambdaPredy) { Expression body = DeserializeInternal(lambdaPredy.Body); return(Expression.Lambda(body, _visitor.GetParameters(lambdaPredy.Parameters))); }
public static LambdaExpression Deserialize(PredyLambdaExpression predy) { _visitor = new PredyParameterVisitor(); return(DeserializeLambda(predy)); }
public static LambdaExpression Deserialize(this PredyLambdaExpression predy) { return(PredyConverter.Deserialize(predy)); }