У меня есть объект, который выглядит следующим образом:
public class Media
{
public virtual string Caption { get; set; }
public virtual string Description { get; set; }
public virtual string Notes { get; set; }
}
Я хотел бы предоставить пользователю возможность поиска по нескольким ключевым словам в Caption
, Description
,и Notes
свойства.Другими словами, если пользователь ищет « яблочный банан », он должен выполнить поиск по трем строковым свойствам, чтобы узнать, содержит ли какое-либо из них « яблоко » и « банан». '.
Я попробовал следующее утверждение LINQ в качестве теста:
var query = new[] { "apple", "banana" };
// GetAll<T> returns an IQueryable<T>
repo.GetAll<Media>().Where(x => query.All(x.Caption.Contains));
Но я получаю исключение:
ArgumentException:'Объект типа System.Linq.Expressions.UnaryExpression 'не может быть преобразован в тип' System.Linq.Expressions.LambdaExpression '.
Я знаю, что поставщик LINQ для NHib 3.0 не реализует все LINQфункции.Как мне переписать этот запрос LINQ, чтобы он был совместим с NHibernate LINQ?