我需要将此查询转换为nhibernate linq
IEnumerable<Account> accounts = from a in dc.Accounts
where (a.FirstName + " " + a.LastName).Contains(SearchText) ||
a.Email.Contains(SearchText) ||
a.Username.Contains(SearchText)
select a;
我试过这个,但我一开始就陷入困境,所以我需要帮助。
IEnumerable<Account> accounts = NHSession.Query<Account>().Where(x=>x.FirstName)
答案 0 :(得分:2)
从查询的外观中,您可能需要花费几分钟时间阅读Ayende关于复杂搜索的帖子here。
不是使用会话查询或分离标准 - 而是将其实现为QueryOver。然后,您可以在会话调用之前建立搜索条件,然后在最终准备启动时将查询传递给会话。另外,请不要忘记Future Values和Paging以获取更大的结果集:
答案 1 :(得分:1)
下面的查询将返回IQueryable<Account>
,您可以将其用于进一步查询或评估以获得结果。
var accounts = NHSession.Query<Account>().Where(a=> (a.FirstName+" "+a.LastName).Contains(SearchText) || a.Email.Contains(SearchText) || a.Username.Contains(SearchText) );