Linq错误计数(列)

时间:2015-04-27 14:07:27

标签: c# sql-server linq

我正在尝试将一个SQL查询写入Linq,当我在Linq查询中获取计数时,我收到错误。 Sql中的查询已将外连接保留为distinct和count('coulmn')。错误发生在选择新{}

内的count关键字处

SQL查询:

select MagDesc.MagDescID,  MagDesc.MagTitle, COUNT(*)
from   MagDesc (nolock) 
       left outer join tblDetails (nolock) 
            on MagDesc.MagDescID = tblDetails.MagDescID
where PropertyID is not null
group by MagDesc.MagDescID,  MagDesc.MagTitle

Linq查询:

    var model = (from mag in _dbContext.MagDesc
                 join dt in _dbContext.tblDetails on mag.MagDescID equals dt.MagDescID into dt
                 where mag.PropertyID != null
                 from subtable in dt.DefaultIfEmpty()
                 select new { mag.MagDescID, mag.MagTitle, dt.Count(m=>m.MagDescID) }).Distinct();

错误消息:“无效的匿名类型成员声明符。必须使用成员分配,简单名称或成员访问权声明匿名类型成员。”

请在这个linq查询中帮助我。

更新:添加了收到的错误消息

1 个答案:

答案 0 :(得分:1)

   dt.Count(m=>m.MagDescID)

.Count的那个版本需要一个应返回布尔值的函数 我猜测MagDescID不是布尔...

也许您的意思是计算ID的数量:

   dt.Select(m => m.MagDescID)
     .Count()

此外,您需要为该属性命名(如另一个答案中所述):

  select new 
  { 
      mag.MagDescID, 
      mag.MagTitle, 
      magCount = dt.Select(m => m.MagDescID).Count()
  }