【发布时间】:2012-03-20 03:26:48
【问题描述】:
我正在尝试在 ASP.NET MVC 2 应用程序中实现搜索功能。我根据用户输入的条件创建一个表达式:
public ViewResult FindCustomer( string forename, string familyname, DateTime? dob)
{
Expression<Func<Customer, bool>> 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<Customer> customers = CustomerRepository.FilterBy(searchCriteria);
问题是当我运行它时,我得到以下异常
System.InvalidCastException: Unable to cast object of type 'NHibernate.Hql.Ast.HqlCast' to type 'NHibernate.Hql.Ast.HqlBooleanExpression'
根据this,问题是表达式中使用了条件运算符。
所以我想我必须以其他方式创建表达式,但我不知道该怎么做。我对 Linq 还很陌生,因此我们将不胜感激地接受任何帮助!
【问题讨论】:
标签: c# linq nhibernate linq-to-nhibernate