选择Top for Subquery with Entity Framework

时间:2014-12-31 01:59:32

标签: c# linq entity-framework

我在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吗?

谢谢

1 个答案:

答案 0 :(得分:2)

Masters
   .Select(m => new{
       Master = m, 
       Detail = m.Details.OrderBy(d => d.StartDate).FirstOrDefault())
   })