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

时间:2018-03-14 19:18:12

标签: c# sql sql-server linq select

我目前有一个带有ID,名称和描述的'Inspirations'表,带有ID,名称和描述的'Photos'表,以及一个只有PhotoID和InspirationID外键的链接表InspirationPhotos。我想选择与每个InspirationID相关联的第一张照片。我知道我可能需要遍历Photos表,然后选择FirstOrDefault。

我想我需要像

这样的东西
foreach (var inspiration in Inspirations)
{
    inspiration.Photos.Where(x=>x.PhotoId == ?)
}

也许我应该在链接表中添加主键? 提前致谢

1 个答案:

答案 0 :(得分:1)

你可以这样做:

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
        )
    )
}).