尝试使用LINQ从多个输入中获取另一个表中的多个项目

时间:2015-05-28 11:32:07

标签: c# linq

我有一张桌子,在一些不同的图片上有一些id。有了那些id,我想得到与另一张桌子匹配的图片ID。但我似乎无法让这个工作。

Heres是我到目前为止所得到的:

.master

我最终需要的是能够将所有图像返回到列表中,因此我可以将其用作转发器的数据源。

这是我找到会话中所有图像的方法

public List<Image> ImagesForSession()
{
    var userID = User.Identity.GetUserId();
    var newestSes = newSes.GetNewestSession(userID);

    var imgsOnSes = mtm.GetImagesOnSession(newestSes).Select(i => i.ImgId);

    var imgs = imgSes.GetImageOnId(imgsOnSes).Select(x => x);

    return imgs.ToList();
}

最后,这是我在id上获取图像的方法:

public List<MtoMImg> GetImagesOnSession(int sesID)
{
    var query = _db.MtoMImgs.Where(i => i.SessionId == sesID).Select(i => i);
    return query.ToList();
}

1 个答案:

答案 0 :(得分:1)

这是一个将它们组合在一起的声明。您需要更新on子句以匹配表的相关方式。如果您正在进行EntityFramework,这将变得更加简单。因为您可以直接选择图像。

public List<Image> GetImageOnId(int sessionID)
{
    return (
      from sessionImage in _db.MtoMImgs
      join  image in _db.Images on sessionImage.ImageId equals image.Id
      where sessionImage.SessionId == sessionID 
      select  image
    ).ToList();
}

选项2是你得到的图像。需要了解更多数据模型的工作原理,还需要使用EF。

return _db.Images.Where(x=>x.SessionId== sessionID).ToList();