using System.Collections.Generic;
using System.Data.Entity;
using System.Linq.Expressions;
public static void Main()
'Value': '""Customer_A""',
'Expression': 'Description.Contains(""ZZZ Projects"")',
'Expression': 'Description.Contains(""Fiddle"")',
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 == "LongCount")
if(!string.IsNullOrEmpty(qc.Expression))
var count = query.LongCount(x => "x." + qc.Expression);
Console.WriteLine("Expression : x." + qc.Expression + "\nLongCount Result : " + count );
var expression = "x.[Field] [Operation] [Value]"
.Replace("[Field]", qc.Field)
.Replace("[Operation]", qc.Operation)
.Replace("[Value]", qc.Value);
var count = query.LongCount(x => expression);
Console.WriteLine("Expression : " + expression + "\nLongCount Result : " + count );
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; }