2013-02-23 35 views
1

我需要将此查询转换为NHibernate的LINQNHibernate的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; 

我试过,但我的“M停留在起步阶段,所以我需要帮助。下面

IEnumerable<Account> accounts = NHSession.Query<Account>().Where(x=>x.FirstName) 
+0

'我需要帮助'不是问题。如果你问了一个具体的问题,你会得到更多有用的答案。 – 2013-02-24 02:29:40

回答

1

查询将返回IQueryable<Account>,您可以使用它进一步查询或评估以获得结果。

var accounts = NHSession.Query<Account>().Where(a=> (a.FirstName+" "+a.LastName).Contains(SearchText) || a.Email.Contains(SearchText) || a.Username.Contains(SearchText)); 
2

从外观您可能需要花费几分钟的时间阅读Ayende在复杂搜索中找到的帖子here

而不是使用会话查询或分离标准 - 考虑将其实现为QueryOver。然后,您可以在会话调用之前构建搜索条件,然后只要将查询传递给会话,当您终于准备好提交时。另外,不要忘记Future Values和寻呼较大的结果集: