Возникли проблемы с написанием sql запроса на linq - PullRequest
2 голосов
/ 07 октября 2011

У меня есть SQL-запрос, который возвращает все учетные записи, а в верхней части таблицы результатов у меня есть учетные записи с одинаковыми документами.Запрос ниже работает просто отлично, но есть проблема с реализацией такой же логики в linq.Пожалуйста помоги!

select 
(
   select 
      COUNT(*) 
   from Signs X, Signs Y 
   where  X.AccountID = 2 and Y.AccountID = A.ID and X.DocID = Y.DocID
), 
*
from 
  Accounts A
where 
  A.ID != 2
order by 1 desc

1 Ответ

3 голосов
/ 07 октября 2011
var result = from A in Accounts
             where A.ID != 2
             select new { Count = (from X in Signs
                                   from Y in Signs
                                   where X.AccountID == 2 &&
                                   Y.AccountID == A.ID &&
                                   X.DocID == Y.DocID
                                   select 1).Count(),
                          A };

Примечание. Возможно, вы могли бы изменить подзапрос на join на DocID, но я оставил все как есть, чтобы вы могли увидеть сходство между SQL и LINQ.

Пример с объединением:

var result = from A in Accounts
             where A.ID != 2
             select new { Count = (from X in Signs
                                   join Y in Signs on X.DocID equals Y.DocID
                                   where X.AccountID == 2 &&
                                   Y.AccountID == A.ID
                                   select 1).Count(),
                          A };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...