我有一个传递给NHibernate的linq查询,Linq2NHibernate将解析它并返回给我填充的实体。
string firstName = "Ryan";
Store store = _repository.Query<Store>().Where(x => x.Employees.Select(y => y.FirstName).Contains(firstName)).FirstOrDefault();
麻烦的部分是 x =&gt; x.Employees.Select(y =&gt; y.FirstName).Contains(firstName)
这应该做的是选择员工名为Ryan的商店。
我在上面的行中收到错误,上面写着“未处理的表达式类型:1004 ”
在我看来,它是Linq2NHibernate的限制,.Select().Contains()
无法解析。
有什么想法吗?有没有其他人都收到此错误?我该怎么做才能解决它或解决它?
[编辑]
以下是我最终使用的内容。
string firstName = "Ryan"
Store store = _repository.Query<Store>().Where(x => x.Employees.Any(y => y.FirstName == firstName)).FirstOrDefault();
Linq查询为x => x.Employees.Any(y => y.FirstName == firstName)
答案 0 :(得分:3)
我没有使用LINQ到NHibernate,但这不是我在其他任何地方编写该查询的方式。尝试:
string firstName = "Ryan";
Store store = _repository.Query<Store>()
.Where(s => s.Employees.Any(
e => e.FirstName.Equals(
firstName, StringComparison.WhateverTypeYouNeed))
).FirstOrDefault();
如果L2NH不喜欢string.Equals(),请尝试==