2013-06-07 3 views
0

Просто интересно, как написать следующий SQL в синтаксисе LINQкак написать следующий синтаксис LINQ

select U.Id, U.FirstName, U.Surname, 
(select COUNT(COESNo) from COESDetails where InspectorId = U.Id) as Count 
from UserDetails U 
where U.AppearOnReport = 1 

либо Fluent или запроса выражений, или оба

Благодаря

+0

Используя нижеследующее/программное обеспечение, вы можете легко преобразовать SQL-запрос в LinqQuery. http://www.sqltolinq.com/ –

ответ

0

плавающий синтаксис составляет

db.UserDetails.Where(ud => ud.AppearOnReport).Select(ud => 
    new { 
     ud.Id, 
     ud.FirstName, 
     ud.Surname, 
     Count = db.COESDetails.Count(c => c.InspectorId == ud.Id) 
    }); 
+0

Спасибо большое, спасибо – user2206329

1
from u in db.UserDetails 
join c in db.COESDetails on u.Id equals c.InspectorId into uc 
where u.AppearOnReport == 1 
select new { 
    u.Id, 
    u.FirstName, 
    u.Surname, 
    Count = uc.Count() 
} 
0

Я пишу здесь непосредственно, не имея C# компилятор открыт, но он должен работать:

using(var context = new DataContext()) 
{ 
    var query = from detail in context.UserDetails 
       where detail.AppearOnReport = 1 
       select new 
       { 
         Id = detail.Id, 
         FirstName = detail.FirstName, 
         Surname = detail.Surname, 
         Count = context.COESDetails.Count(li => li.InspectorId = detail.Id) 
       }; 
} 

Проблема этого запроса является то, что берет на себя все столбцы из таблицы UserDetails (или я так думаю, что). Я помню, что вы могли бы как-то указать только определенные столбцы, а не все сопоставленные столбцы из объекта.

В любом случае, вы можете проверить мой запрос с помощью SQL Profiler. Если вы хотите играть больше со ссылкой, есть инструмент для этого: LINQPad.

Cheers!

+0

Спасибо большое. Есть ли способ от LINQPad конвертировать sql-запрос в LINQ? – user2206329

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