Выражение Linq, эквивалентное запросу TSQL - PullRequest
0 голосов
/ 19 сентября 2009

Каким будет выражение Linq, эквивалентное следующему запросу TSQL:

SELECT c.[CustomerId]
  ,c.[Name]
  , (SELECT COUNT(*) FROM Incidents WHERE CustomerId = c.CustomerId) AS IncidentsCount
  , (SELECT COUNT(*) FROM Opportunities WHERE CustomerId = c.CustomerId) AS OpportunitiesCount
  , (SELECT COUNT(*) FROM Visits WHERE CustomerId = c.CustomerId) AS VisitsCount
FROM [Customers] c

1 Ответ

3 голосов
/ 19 сентября 2009

Я не проверил дважды в визуальной студии, но это должно работать:

var x = (from c in Context.Customers
         select new {
             CustomerId = c.CustomerId,
             Name = c.Name,
             IncidentsCount = 
                 Context.Customers.Count(i => i.CustomerId == c.CustomerId),
             OpportunitiesCount = 
                 Context.Opportunities.Count(o => o.CustomerId == c.CustomerId),
             VisitsCount = 
                 Context.Visits.Count(v => v.CustomerId == c.CustomerId)
         });

Обновление: я изменил код, чтобы его было немного легче читать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...