Entity Framework Classic C# Eval Expression
Description
The C# Eval Expression features let you execute code dynamically.
var result = Eval.Execute("X + Y", new { X = 1, Y = 2 }); // return 3
Try it: NET Core | NET Framework
This feature is provided by the library C# Eval Epression (Included with EF Classic).
Real-Life Scenarios
Sets entity value from JSON
Your application needs to set property value from a JSON file you receive.
var json = @" [ { 'Type': 'Customer', 'Properties': { 'Code': 'Z0', 'FirstName': 'ZZZ', 'LastName': 'Projects' } }, { 'Type': 'Customer', 'Properties': { 'Code': 'Z1', 'FirstName': 'Jonathan', 'LastName': 'Magnan' } } ] "; var listToMerge = new List<object>(); foreach(var item in list) { var obj = Eval.Execute("new " + item.Type + "()"); listToMerge.Add(obj); foreach(var property in item.Properties) { Eval.Execute(property.Name + " = '" + property.Value + "'", obj); } }
Try it: NET Core | NET Framework
Executing LINQ from JSON
Your application needs to filter returning entities depending on the JSON you receive.
var json = @" [ { 'Method': 'Where', 'Field': 'Name', 'Operation': '==', 'Value': '""Customer_A""', }, { 'Method': 'Where', 'Expression': 'Description.Contains(""ZZZ Projects"")', } ] "; foreach(var qc in queryCriterias) { if(qc.Method == "Where") { if(!string.IsNullOrEmpty(qc.Expression)) { query = query.Where(x => "x." + qc.Expression); } else { var expression = "x.[Field] [Operation] [Value]" .Replace("[Field]", qc.Field) .Replace("[Operation]", qc.Operation) .Replace("[Value]", qc.Value); query = query.Where(x => expression); } } }
Try it: NET Core | NET Framework
Learn more
More documentation can be found here: C# Eval Expression