我正在尝试将一个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查询中帮助我。
更新:添加了收到的错误消息
答案 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()
}