我在C#Entity Framework中设置了Master-Detail模型关系。一条主记录可能有多个详细记录。我希望带回所有主记录,但只记录每个主记录的第一个相关详细记录。
e.g。 硕士:Id = 5
细节:Id = 1; EventMasterId = 5;
细节:Id = 2; EventMasterId = 5;
细节:Id = 3; EventMasterId = 5;
当“Master Id 5”回来时,我只想要第一个相关记录“Detail Id 1”。我不想要其他细节。
我可以在原始SQL中执行此操作,但无法弄清楚如何将其转换为LINQ:
SELECT * FROM EventMasters
JOIN EventDetails
ON EventDetails.Id =
(SELECT TOP 1 Id
FROM EventDetails
WHERE EventMasterId=EventMasters.Id
ORDER BY StartDate)
这是EventDetails中的“Select Top 1”,特别是绊倒我。
有人知道如何将这个SQL语句转换为LINQ吗?
谢谢
答案 0 :(得分:2)
Masters
.Select(m => new{
Master = m,
Detail = m.Details.OrderBy(d => d.StartDate).FirstOrDefault())
})