我正在尝试在linq中编写此查询
SELECT dbo.Tbl_Users.ID, COUNT(dbo.Tbl_Inputs.ID) AS Inputs
FROM dbo.Tbl_Users LEFT JOIN
dbo.Tbl_Inputs ON dbo.Tbl_Inputs.User_ID = dbo.Tbl_Users.ID
GROUP BY dbo.Tbl_Users.ID
这是我的linq代码,我创建了一个User()类,它包含用户ID和用户在Tbl_Inputs中输入的输入数:
List<User> GetAllUsers()
{
List<User> userlist = new List<User>();
userlist = (from u in Data.Tbl_Users
join i in Data.Tbl_Inputs on u.ID equals i.User_ID
into Joined
from p in Joined.DefaultIfEmpty()
group p by new { u.ID }
into grp select new User()
{
Id = grp.Key.ID,
Inputs = grp.Count()
}).ToList();
return userlist;
}
问题是如果输入为0则返回1.
无法理解。
由于
答案 0 :(得分:3)
我认为你需要在计算时检查空子。尝试用以下内容替换你的行:
Inputs = grp.Count(t=>t.User_ID != null)
答案 1 :(得分:1)
我知道这已经很长时间了,但是对于注册,您可以执行以下操作来使值0:
inputs = grp.Count(t => t > 0);