【发布时间】:2020-07-22 05:57:56
【问题描述】:
对于我的一生,我无法通过谷歌搜索我的出路。
我在一个数据库中有 2 个表 1. 电脑 2. 用户登录
本质上,我正在尝试从“UserLogins”表中获取最新的登录条目,并将其与“Computers”表中的相应条目连接起来。
这听起来很简单,但我还没有参加足够多的 LINQ/EF Core 课程,似乎还没有弄清楚如何正确地做到这一点。
下面是一些我知道的 SQL 函数,我希望它能够:
SELECT * FROM ComputerInfo
LEFT JOIN (
SELECT LoginID, UserID, l.ComputerName, IpAddress, l.LoginTime FROM UserLogins as l
INNER JOIN (
SELECT ComputerName, MAX(LoginTime) as LoginTime
FROM UserLogins
GROUP BY ComputerName) as max on max.ComputerName = l.ComputerName and max.LoginTime = l.LoginTime
) as toplogin on toplogin.ComputerName = ComputerInfo.ComputerName
作为参考,我将在我的 Controller.cs 类中实现它,我正在使用: EF 核心 (3.1.2) ASP.NET Core (3.1)
我确实有几个我正在尝试返回结果的查询,但我无法在没有错误的情况下加入它们:
var computerQuery = _context.ComputerInfo
.OrderBy(on => on.ComputerName)
var userQuery = _context.UserLogins
.Select(p => p.ComputerName)
.Distinct()
.Select(id => _context.UserLogins
.OrderByDescending(p => p.LoginTime)
.FirstOrDefault(p => p.ComputerName == id))
.ToListAsync();
【问题讨论】:
标签: c# entity-framework linq asp.net-core-webapi sql-to-linq-conversion