为“使用实体框架的子查询”选择“顶部”

本文关键字:查询 顶部 选择 框架 实体 | 更新日期: 2023-09-27 18:35:47

我在 C# 实体框架中设置了主从模型关系。 一个主记录可能有多个详细记录。 我希望恢复所有主记录,但只恢复每个主记录的第一个关联详细信息记录。

例如主:Id=5

详细信息:id=1;EventMasterId=5;

细节:id=2;EventMasterId=5;

细节:id=3;EventMasterId=5;

当"主 ID 5"返回时,我只想要第一个关联的记录"详细信息 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)
这是"

事件详细信息"中的"选择前 1 名"特别让我绊倒。

有人知道如何将此SQL语句转换为LINQ吗?

谢谢

为“使用实体框架的子查询”选择“顶部”

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