Я пытаюсь реализовать функцию поиска в приложении ASP.NET MVC 2. Я создаю выражение на основе критериев введенный пользователем:
public ViewResult FindCustomer( string forename, string familyname, DateTime? dob)
{
Expression> searchCriteria = p => (
forename.IsNullOrEmpty() ? true : p.Forename == forename
&& familyname.IsNullOrEmpty() ? true : p.FamilyNames.Any(n => n.Name == familyname)
&& dob.HasValue ? true : p.DOB == dob
);
, который затем передается методу в репозитории
IQueryable customers = CustomerRepository.FilterBy(searchCriteria);
Проблема в том, что когда я запускаю это, я получаю следующее исключение
System.InvalidCastException: Unable to cast object of type 'NHibernate.Hql.Ast.HqlCast' to type 'NHibernate.Hql.Ast.HqlBooleanExpression'
Согласно thisпроблема заключается в использовании условного оператора в выражении.
Итак, я полагаю, что мне нужно создать выражение каким-то другим способом, но я не уверен, как это сделать. Я новичок в Linq, поэтому любая помощь будет принята с благодарностью!