I’m struggle with adding ToLower() to the Contains LINQ Expressions:
Here the code of mine with Dynamically LINQ Expressions (Contains):
private static Expression GetExpressionCase<T>(ParameterExpression param, SearchCriteria searchCriteria)
{
MethodInfo containsMethod = typeof(string).GetMethod("Contains", new[] { typeof(string) });
MemberExpression member = Expression.Property(param, searchCriteria.Key);
ConstantExpression constant = Expression.Constant(Convert.ChangeType(searchCriteria.Value, member.Type));
switch (searchCriteria.Operation)
{
case '=':
return Expression.Equal(member, constant);
case '>':
return Expression.GreaterThanOrEqual(member, constant);
case '<':
return Expression.LessThanOrEqual(member, constant);
case ':':
return Expression.Call(member, containsMethod, constant);
}
return null;
}
My codes works fine but i want to add ToLower() before Contains() like this query:
- Current query look likes this (Contains() only):
var test = context.Table.Where(x => x.Key.Contains("value"));
- I hope query will look likes this (Add Tolower()):
var test = context.Table.Where(x => x.Key.ToLower().Contains("hoa"));
I’m already tried StringComparison.OrdinalIgnoreCase but it can’t not translate to query (postgreSQL)
Pardon my bad English, thanks for reading,