c# - VB.NET SQL Server 查询到 LINQ

标签 c# sql-server vb.net visual-studio linq

我正在尝试将下面的工作查询转换为 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/

相关文章:

c# - 正则表达式匹配除字符列表以外的所有内容

c# - 在 devexpress xtragrid 中单击列标题时选择按列?

c# - 执行大型 SQL 脚本(使用 GO 命令)

c# - ComboBox:根据属性状态设置样式内容

c# - 为 SEO 友好的博客正确设置自定义路由

c# - 具有 1000 个值的 Silverlight 组合框

sql - SQL Server如何将索引从一个表复制到另一个表

sql - SQL SERVER 中的分组依据/打印相关查询

c# - 我可以发布私有(private) NuGet 包吗?

c# - Google Api 获取 token 请求返回 invalid_request