- 优化 WhereDynamicFilter;

This commit is contained in:
2881099
2021-02-05 11:06:44 +08:00
parent 6ab2f3922f
commit 53669da86e
3 changed files with 57 additions and 0 deletions

View File

@ -525,6 +525,17 @@ namespace FreeSql.Internal.CommonProvider
{
Expression exp = ConvertStringPropertyToExpression(fi.Field);
switch (fi.Operator)
{
case DynamicFilterOperator.Contains:
case DynamicFilterOperator.StartsWith:
case DynamicFilterOperator.EndsWith:
case DynamicFilterOperator.NotContains:
case DynamicFilterOperator.NotStartsWith:
case DynamicFilterOperator.NotEndsWith:
if (exp.Type != typeof(string)) exp = Expression.TypeAs(exp, typeof(string));
break;
}
switch (fi.Operator)
{
case DynamicFilterOperator.Contains: exp = Expression.Call(exp, MethodStringContains, Expression.Constant(Utils.GetDataReaderValue(exp.Type, fi.Value?.ToString()), exp.Type)); break;
case DynamicFilterOperator.StartsWith: exp = Expression.Call(exp, MethodStringStartsWith, Expression.Constant(Utils.GetDataReaderValue(exp.Type, fi.Value?.ToString()), exp.Type)); break;