2013-02-23 62 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和尋呼較大的結果集: