Linq To NHibernate:.StartsWith on multiple properties

时间:2009-10-18 13:59:52

标签: linq nhibernate linq-to-nhibernate startswith

我正在尝试完成以下查询(通知.StartsWith):

return (from p in _session.Linq<Profile>()
        where (p.Firstname + " " + p.Lastname).StartsWith(wildcard)
        select p).ToList();

抛出:无法解析属性:Firstname.Lastname。

如果我这样做:

return (from p in _session.Linq<Profile>()
        where p.Firstname.StartsWith(wildcard)
        select p).ToList();

一切正常。怎么会这样?

提前致谢!

2 个答案:

答案 0 :(得分:2)

Where Expression不知道如何处理字符串的连接。它试图弄清楚属性,而不是价值。

此外,为了将来参考,带有concat的StartsWith和带有out的另一个将在实践中返回相同的东西。

这是你想要的吗?

return (from p in _session.Linq<Profile>()
        where p.Firstname.StartsWith(wildcard) || p.Lastname.StartsWith(wildcard)
        select p).ToList();

答案 1 :(得分:1)

更新:根据新的见解和已编辑的问题重写答案。

wildcard中的内容是什么?预期的输出与输入相比是多少?如果您结束"Abel" + " " + "Braaksma",则wildcard.StartsWith("Abel")wildcard.StartsWith("Abel Br")将返回true,但不会wildcard.StartsWith("Braaks")。你可能意味着Contains吗?但这不会解决您的错误:

您收到的异常似乎来自NHibernate,而不是来自您的代码。 Lastname是否可能没有正确映射到数据库表?你能展示一下堆栈跟踪吗?您是否可以访问LINQ语句上下文之外的属性,但是填充了表中的数据?