nhibernate linq基础知识

时间:2013-02-23 22:15:15

标签: c# linq nhibernate

我需要将此查询转换为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)

2 个答案:

答案 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) );