C# LINQ:从连接到表B的链接表中具有相应ID的表A中选择第一项

C# LINQ:从连接到表B的链接表中具有相应ID的表A中选择第一项,c#,sql,sql-server,linq,select,C#,Sql,Sql Server,Linq,Select,我目前有一个带有ID、名称和描述的“Inspirations”表,一个带有ID、名称和描述的“Photos”表,还有一个链接表InspirationPhotos,其中只包含PhotoID和InspirationID外键。我想选择与每个InspirationID关联的第一张照片。我知道我可能需要在Photos表中循环,然后选择FirstOrDefault 我想我需要像这样的东西 foreach (var inspiration in Inspirations) { inspiration.

我目前有一个带有ID、名称和描述的“Inspirations”表,一个带有ID、名称和描述的“Photos”表,还有一个链接表InspirationPhotos,其中只包含PhotoID和InspirationID外键。我想选择与每个InspirationID关联的第一张照片。我知道我可能需要在Photos表中循环,然后选择FirstOrDefault

我想我需要像这样的东西

foreach (var inspiration in Inspirations)
{
    inspiration.Photos.Where(x=>x.PhotoId == ?)
}
也许我应该给链接表添加一个主键?
提前感谢

您可以这样做:

var inspirationPhotos = db.Inspirations.Select(i => new {
    Inspiration = i
,   Photo = db.Photos.FirstOrDefault(p =>
        db.InspirationPhotos.Any(ip =>
            ip.PhotoId == p.Id && ip.InspirationId == i.Id
        )
    )
}).