using System.Collections.Generic;
using System.Data.Entity;
using System.Linq.Expressions;
public static void Main()
'Value': '""Customer_B""',
'Expression': 'Description.Contains(""ZZZ Projects"")',
var queryCriterias = JsonConvert.DeserializeObject<List<Criteria>>(json);
using (var context = new EntityContext())
var query = context.Customers.AsQueryable();
foreach(var qc in queryCriterias)
if(qc.Method == "Single")
if(!string.IsNullOrEmpty(qc.Expression))
var customer = query.Single(x => "x." + qc.Expression);
FiddleHelper.WriteTable("Expression : x." + qc.Expression, new List<Customer>() {customer});
var expression = "x.[Field] [Operation] [Value]"
.Replace("[Field]", qc.Field)
.Replace("[Operation]", qc.Operation)
.Replace("[Value]", qc.Value);
var customer = query.Single(x => expression);
FiddleHelper.WriteTable("Expression : " + expression, new List<Customer>() {customer});
public static void GenerateData()
using (var context = new EntityContext())
context.Customers.Add(new Customer() { Name = "Customer_A", Description = "ZZZ Projects"});
context.Customers.Add(new Customer() { Name = "Customer_A", Description = "Description"});
context.Customers.Add(new Customer() { Name = "Customer_B", Description = "Description"});
public class EntityContext : DbContext
public EntityContext() : base(FiddleHelper.GetConnectionStringSqlServer())
public DbSet<Customer> Customers { get; set; }
public int CustomerID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Method { get; set; }
public string Field { get; set; }
public string Operation { get; set; }
public string Value { get; set; }
public string Expression { get; set; }