linq(到 nHibernate):“就像”操作员
嗨
给定一个字符串列表,我想检索名称包含给定字符串之一的所有项目。
例如 - 给定 {"foo", "kuku"} 我想检索员工 "Corfoo"、"kuku maluku" 和 "kukufoo"。
我已经尝试了以下操作,但出现了空引用异常(?)
query.Where(u => values.Any(v=> u.FullName.Contains(v)) );
以下生成了“Lambda 表达式不在范围内”异常。
query.Where(u => (values.Count(v => u.FullName.Contains(v)) > 0) );
知道如何做到这一点吗?
我正在考虑迭代值集合并为每个元素添加新条件。
问题是 - .Where() 函数是一个连词 (AND),我需要析取 (OR)...
(我正在使用带有 Linq 提供程序的 nH 2.1.2;尚未在 nH3.0 上尝试过此操作...)
Hi
Given a list of strings I want to retrieve all items whose names contain one of the given strings.
for example- given {"foo", "kuku"} I want to retrieve the employees "Corfoo", "kuku maluku" and "kukufoo".
I've tried the following, but got a null-reference exception(?)
query.Where(u => values.Any(v=> u.FullName.Contains(v)) );
The following produced a 'Lambda expression not in scope' exception.
query.Where(u => (values.Count(v => u.FullName.Contains(v)) > 0) );
any idea how this can be done?
I was thinking along the lines of iterating over the values collection and adding a new condition for each element.
problem is- the .Where() function is a conjunction (AND) and I need disjunction (OR)...
(I'm using nH 2.1.2 with Linq provider; hadn't tried this on nH3.0 yet...)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您不仅限于 Linq 提供程序,而且还对 ICriteria API 开放,我建议使用以下内容:
我认为在 NHibernate.Linq 中尝试这一点即使不是不可能,也可能会更困难。使用 NH 3.0,您可以使用 QueryOver,这将摆脱魔术字符串。
If you are not limited to the Linq provider but also open to the ICriteria API, I suggest using the following:
I think trying that in NHibernate.Linq might be harder if not impossible. With NH 3.0 you could use QueryOver, which would get rid of the magic strings.
我使用了以下代码希望有帮助;
I Used the following code hope it helps;
我使用了以下编码风格
QueryOver
LINQ
i used the following coding styles
QueryOver
LINQ