Итак, я хочу сделать общий сортировщик для моих данных. У меня есть этот код для получения данных из базы данных, которая будет извлекать только те данные, которые содержат value
.
using System.Linq.Dynamic;
public static IQueryable<object> SortList(string searchString, Type modelType,
IQueryable<object> model)
{
....
string toStringPredicate = type == typeof(string) ? propertyName +
".Contains(@0)" : propertyName + ".ToString().Contains(@0)";
model = model.Where(propertyName + " != NULL AND " + toStringPredicate, value);
}
Модель такая:
public class ManageSubscriberItems
{
public int? UserId { get; set; }
public string Email { get; set; }
public Guid SubscriberId { get; set; }
}
Когда я звоню:
models = (IQueryable<ManageSubscriberItems>)EcommerceCMS.Helpers.FilterHelper
.SortList(searchString, typeof(ManageSubscriberItems), models);
if(models.Any())
Выдает эту ошибку:
"LINQ to Entities не распознает метод 'System.String
Метод ToString (), и этот метод не может быть переведен в хранилище
выражение ".
EDIT
Я нашел проблему, но все еще не могу ее исправить. Поэтому, если свойство не string
, оно вызовет ошибку при вызове .ToString().Contains()
.
model = model.Where(propertyName + " != NULL AND " + propertyName +
".ToString().Contains(@0)", value);
Я хочу реализовать LIKE
в запросе. Кто-нибудь может мне помочь?