2013-02-17 24 views
1

我怎麼能寫這個的HQL Linq中:我如何轉換HQL內連接到LINQ加入

select a from A a 
join a.childrenList b 
where b = 1 

childrenList是一個不按類型映射到數據庫中,但 而被保存枚舉的列表中的整數值。

這個HQL工作正常,但我想寫在Linq。 我不能寫一些可以編譯的東西。

+2

尤其是[對於德國人](http://www.dict.cc/german-english/Aa.html);) – 2013-02-17 21:02:17

+3

我不知道NH或HQL,但我有一個奇怪的感覺,這可能工作:'會議.Query ().Where(a => a.childrenList.Any(b => bc == 1));' – GolfWolf 2013-02-17 21:13:30

+0

如果b是一個枚舉,那麼bc是什麼?你應該發佈你的具體類/類型,映射什麼而不是 – jbl 2013-02-18 09:37:57

回答

1

我認爲你可以做

var results = 
    from a in db.Query<A>() 
    where a.childrenList.Any(b => b == (B)1) 
    select a; 

,或者使用鏈接方法:

var results = db.Query<A>().Where(a => a.childrenList.Any(b => b == (B)1)); 

對於我們上面的意見,我想你可以刪除from A a in ... select a陳述,因爲它們是多餘的。

+0

由於'a.childrenList'中的'a'被綁定到'a',所以''需要'。這個Linq查詢有效,但它被轉換爲「where exists ...」查詢而不是「join」查詢。 – 2013-02-18 12:55:14

+0

@ S.M.Amin是的,對不起,編寫該版本時我沒有給予足夠的重視。我的意思是,如果使用鏈式LINQ方法,'from/select'不需要。我已經更新了我的答案。 – GolfWolf 2013-02-18 13:28:16