public static Expression<Func<T, bool>> CreateWhere<T>(string columnName, Type columnType, object value,Expression<Func<T, bool>> expression=null) { if (typeof(T).GetProperties().Any(p=>p.Name==columnName)) { var parameter = Expression.Parameter(typeof(T), "w"); var lambdaBody = Expression.Equal( Expression.PropertyOrField(parameter, columnName), Expression.Constant(value, columnType) ); if (expression != null) { var data = Expression.AndAlso(lambdaBody, expression.Body); return Expression.Lambda<Func<T, bool>>(data, parameter); } return Expression.Lambda<Func<T, bool>>(lambdaBody, parameter); } return null; }