如何在LINQ语法中编写以下内容

时间:2013-06-07 13:00:53

标签: sql linq

只是想知道如何用LINQ语法编写以下SQL

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或Query Expression,或两者

由于

3 个答案:

答案 0 :(得分: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()
}

答案 1 :(得分: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)
    });

答案 2 :(得分: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事件探查器检查我的查询。如果您想通过链接玩更多内容,可以使用以下工具:LINQPad

干杯!