【问题标题】:Select Top for Subquery with Entity Framework使用实体框架为子查询选择顶部
【发布时间】:2014-12-31 01:59:32
【问题描述】:

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

例如 大师: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 吗?

谢谢

【问题讨论】:

    标签: c# linq entity-framework


    【解决方案1】:
    Masters
       .Select(m => new{
           Master = m, 
           Detail = m.Details.OrderBy(d => d.StartDate).FirstOrDefault())
       })
    

    【讨论】:

    • @hjb417:是的。很好的收获。
    • 谢谢@spender。你让它看起来很容易!再次感谢,新年快乐。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    相关资源
    最近更新 更多