[英]SQL to LINQ for SubQuery Entity Framework
i want to convert this SQL to LINQ but i cant compile it. 我想将此SQL转换为LINQ,但我不能编译它。 This is my sql to convert
这是我的sql要转换
SELECT u.UserID ,
A.Username ,
A.Password ,
A.CreatedOn
FROM dbo.tbl_User U
INNER JOIN dbo.tbl_UserAuthDetail A ON A.UserID = U.UserID
AND A.CreatedOn IN (
SELECT TOP 1
CreatedOn
FROM dbo.tbl_UserAuthDetail U2
WHERE U2.UserID = U.UserID
ORDER BY CreatedOn DESC )
and this is my attempt so far 这是我到目前为止的尝试
var q = from u in context.Users
join au in context.UserAuthDetails on u.UserID equals au.UserID &&
(from au2 in context.UserAuthDetails where au2.UserID == u.UserID orderby au2.CreatedOn descending select au2.CreatedOn).ToList().Contains(au.CreatedOn)
Any help would be appreciated. 任何帮助,将不胜感激。
TIA TIA
Note: This code is untested but I think you want to get the latest credential of each user. 注意:此代码未经测试,但我认为您想获取每个用户的最新证书。
var query = context.Users
.GroupJoin(context.UserAuthDetails,
u => u.UserID ,
d => d.UserID,
(u, d) => new
{
User = u,
Details = d.OrderByDescending(x => x.CreatedOn).Take(1)
});
You can remove .Take(1)
to get all the records of the user and still the result is sorted in descending order. 您可以删除
.Take(1)
以获取用户的所有记录,并且结果仍按降序排序。
from u in context.Users
join au in context.UserAuthDetails on u.UserID equals au.UserID &&
context.UserAuthDetails.Where(au2 => au2.UserID == u.UserID)
.OrderByDescending(au2 => au2.CreatedOn)
.Select(au => au2.CreatedOn)
//.Take(1) //you have this in SQL
.Any(auc=>auc == au.CreatedOn)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.