等效 LINQ 查询
我在 SQL Server 2008 中有一个针对学生的 history
表
StudentHistoryId, StudentId, Grade, CreatedAt, ModifiedAt, ModifiedBy, Active
。我是 LINQ 新手。
如何编写 LINQ 查询来获取所有活跃学生的最新修改行以及相同的等效 sql 查询?
I have a history
table for Students in SQL Server 2008.
StudentHistoryId, StudentId, Grade, CreatedAt, ModifiedAt, ModifiedBy, Active
I am new to LINQ.
How do I write a LINQ query to get the latest modified row for all the active students and also the equivalent sql query for the same ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
类似于(假设 LINQ-SQL):
这是假设您想要所有学生,无论他们实际上是否有任何历史记录。如果不想这样做,您可以从历史记录表开始,然后按学生 ID 进行分组。
要查看 SQL,您可以将鼠标悬停在调试中的变量以查看生成的 SQL。我懒得转换 LINQ ;-)
Something like (Assuming LINQ-SQL):
This is assuming that you want all students, regardless of whether they actually have any history. If don't want this, you can start with the History table and group by Student ID.
To view the SQL, you can hover the variable in debugging to see the SQL produced. I'm too lazy to convert the LINQ ;-)
LINQ
SQL
Linq 很老套(我确信有更好的方法,但我不记得了),而且我只是对 SQL 语法有一定的信心(尽管这应该为您指明正确的方向,即使它并不完全正确),但其中任何一个都应该得到:当前活跃的每个学生的最大 ModifiedAt 。
.FirstOrDefault() [LINQ] 或 Top 1 只会选择具有最新 ModifiedAt 的单行(仅一个学生)。
LINQ
SQL
The Linq is hacky (and I'm sure there's a better way, but I can't remember it) and I'm only sort-of confident about the SQL syntax (though that should point you in the right direction even if it's not exactly right), but either of those should get: The maximum ModifiedAt for every student that is currently active.
.FirstOrDefault() [LINQ] or Top 1 would only select the single row (only one student) with the most recent ModifiedAt.