я могу создать выражение вызова с функциями SQL, как показано ниже
var likeMethod = typeof(DbFunctionsExtensions).GetMethod("Like", new[] { typeof(DbFunctions), typeof(string), typeof(string) });
Expression.Call(null, likeMethod, Expression.Constant(EF.Functions), searchKeyExpression, Expression.Constant($"%{filter.Value}%"));
Мне просто нужно понять, как я могу использовать эту функциональность для столбцов, таких как целые или десятичные столбцы, для использования с функциями Like.Если я использую вышеупомянутое выражение, я получаю ошибку ниже.Как я могу использовать выражение с ef, как со строковым типом данных
Аргумент Исключение: исключение аргумента в выражении System.Int32 нельзя использовать для параметра для типа System.String метода Boolean Like (Ef.DBfuntions)
Шаги для воспроизведения
var likeMethod = typeof(DbFunctionsExtensions).GetMethod("Like", new[] { typeof(DbFunctions), typeof(string), typeof(string) });
Expression.Call(null, likeMethod, Expression.Constant(EF.Functions), searchKeyExpression, Expression.Constant($"%{filter.Value}%"));
Как я вижу, есть возможность сделать это в методе Ef.Functions Like в следующем примере
context.Set<MyEntity>().Where(e => EF.Functions.Like((string)(object)e.IntCol, "%1%"))
но как я могу это сделать с помощью выражений членов.
Источник: - https://github.com/aspnet/EntityFrameworkCore/issues/9578
Это решение для запроса по прямой линии.https://github.com/aspnet/EntityFrameworkCore/issues/16195
Дополнительные технические сведения
Версия EF Core: (ASP.NET Core 2.1) Поставщик базы данных: (например, Microsoft.EntityFrameworkCore.SqlServer) Операционная система: IDE: (например, Visual Studio 201715,4) * * один тысяча двадцать шесть