Нужна помощь: упростить/изменить SQL-запрос Oracle, чтобы я мог использовать его в LINQ

У меня есть следующий SQL-запрос, и мне нужно построить его с помощью LINQ, но это слишком сложно, чтобы найти простой способ. :-/

Вот первый запрос:

SELECT * FROM tbl_a
LEFT JOIN
(
    SELECT tbl_a.id AS id
    SUM(tbl_b.amount) AS amount
    FROM (tbl_a LEFT JOIN tbl_c ON tbl_a.id = tbl_c.from_this_id)
        LEFT JOIN tbl_b ON tbl_c.id = tbl_b.tbl_c_id
        WHERE (tbl_c.deleted = FALSE)
               AND tbl_b.deleted = FALSE
               AND tbl_b.status = 2
        GROUP BY tbl_a.id
) tbl_tmp
ON tbl_a.id = tbl_tmp.id
WHERE (tbl_tmp.amount Is NULL OR tbl_a.amount > tbl_tmp.amount)
      AND tbl_a.amount > 0
      AND tbl_a.item_ID = item.Id
      AND tbl_a.type_ID = type.Id
      AND tbl_a.deleted = FALSE

Должен вам сказать, что "item.Id" и "type.Id" являются параметрами типа long, поэтому вы можете заменить их числом.

Может ли кто-нибудь помочь мне сделать альтернативный запрос с тем же результатом, чтобы я мог использовать его с LINQ? Или кто-нибудь может преобразовать это напрямую в LINQ?!


person 2-Lee    schedule 02.09.2013    source источник
comment
См. этот ответ здесь   -  person jao    schedule 02.09.2013
comment
Пожалуйста, никогда не бросайте SQL и не просите конвертировать его. По крайней мере, покажите модель класса, чтобы были видны свойства навигации и множественность ассоциаций.   -  person Gert Arnold    schedule 02.09.2013
comment
Ладно, извини, в следующий раз буду знать. Извините, у меня было много работы, поэтому не было времени ответить. Я сделал решение, но обнаружил, что проблема в том, что LINQ to NHibernate (v3.3.3 GA + SP1) еще не реализовал LEFT JOINS/LEFT OUTER JOINS через GroupJoin(), поэтому я должен использовать CreateSQLQuery для это сложные запросы. HQL пока не прост для этих сложных запросов. Мне больше нравится LINQ (с синтаксисом метода). ;)   -  person 2-Lee    schedule 25.09.2013