2013-02-17 2 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);) –

+3

Я не знаю NH или HQL, но у меня странное чувство, что это может сработать: 'session .Query () .Where (a => a.childrenList.Any (b => bc == 1)); ' – GolfWolf

+0

, если b является перечислением, что такое bc? Вы должны опубликовать свои конкретные классы/типы, с тем, что отображается, а не – jbl

ответ

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

'from A a' необходимо, так как' a' в 'a.childrenList' привязан к нему. Этот запрос Linq работает, но он преобразуется в запрос 'where exists ...', а не запрос 'join'. –

+0

@ S.M.Amin да, извините, я не уделял достаточного внимания при написании этой версии. Я имел в виду, что 'from/select' не понадобится, если использовать прикованные методы LINQ. Я обновил свой ответ. – GolfWolf

Смежные вопросы