Добавить содержит метод на пользовательский объект для работы с LINQ - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть класс со свойством, которое содержит сериализованные данные в формате json:

public class MyObject
{
    public string SerializedData 
    {
        get
        {
            ...
        }
        set
        {
            ...
        }
    }
}

Объект является свойством объекта базы данных платформы сущностей:

public class MyRecord
{        
    public int Id { get; set; }

    public MyObject Item { get; set; }
}

I 'Теперь я пытаюсь написать оператор LINQ, чтобы проверить, содержит ли сериализованная строка мой текст для поиска.Я строю оператор LINQ динамически:

var predicate = PredicateBuilder.New<TEntity>();
var param = Expression.Parameter(typeof(TEntity), typeof(TEntity).Name);
Expression property = Expression.Property(param, type.Name);

Expression contains = Expression.Call(
            property, "Contains",
            null,
            new[] { Expression.Constant("test") });

        predicate.Or(Expression.Lambda<Func<TEntity, bool>>(contains, param));

Мой объект не содержит метод "Contains", поэтому я добавляю один:

public class MyObject
{
    ...
    public bool Contains(string value)
    {
        return true;
    }
}

Когда мой запрос выполняется, я получаюследующая ошибка:

LINQ to Entities не распознает метод метода Boolean Contains (System.String), и этот метод нельзя преобразовать в выражение хранилища.

Я не уверен, чтоя даже правильно подхожу к этому?

Может кто-нибудь помочь, пожалуйста?

Спасибо

...