我正在尝试将下面的工作查询转换为 LINQ VB.NET,但是,我没有得到结果。
select
s.id, s.LastName, COUNT(c.Id)
from
Students s, Courses c
where
s.Id = c.Student_Id
group by
s.Id, s.LastName
到目前为止我已经达到了:
Dim query = (From s In db.Students
Join c In db.Courses On s.Id Equals c.Student_Id
Group s, c By s.Id, s.LastName, c.Grade Into Group
Select New With {.Id = Id, .Name = LastName, .Counter = Group.Count
}).ToList
结果不正确。你能帮帮我吗?
最佳答案
很明显的一件事是 group by
子句。在您的 SQL 上:
group by s.Id, s.LastName
但在 Linq 上,您还可以按 c.Grade
分组:
Group s, c By s.Id, s.LastName, c.Grade Into Group
另一个小问题是 COUNT(c.Id)
,它应该只计算非空值,但你可能没有任何空值,所以它应该是相同的。
在 Linq 中的许多情况下,如果您有外键并且模型设置正确,则不应使用 Join
。这也可能有效(我不确定这是正确的语法):
db.Students.Select(Function(s) New With {.Id = s.Id, .Name = s.LastName, .Counter = s.Courses.Count()}).ToList
关于c# - VB.NET SQL Server 查询到 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43510000/