我再次为LINQ查询的语法苦苦挣扎。
我看了LINQ Join on top 1,但我还是很困惑!
用户可以拥有0-n张照片。
我有我需要的SQL但无法弄清楚如何在LINQ中实现它。 SQL是这样的:
SELECT User.Name, Photo.ImageUri
FROM User
LEFT OUTER JOIN Photo
ON Photo.Id =
(
SELECT TOP 1 Id
FROM Photo
WHERE UserId = User.Id
)
我正在使用Entity Framework(.NET Core),并尝试了以下内容:
var users = _context.Users.Select(x => new
{
name= x.Name,
photo = x.Photos.Select(c => c.ImageUri).FirstOrDefault()
});
这个问题是每个用户都会在照片上创建一个SELECT。我正在寻找一种解决方案,不需要为每个用户记录在数据库上进行额外的查询。