如果另外两个ID在两个不同的表中匹配,则获取ID

时间:2016-09-08 10:24:15

标签: asp.net-mvc linq

我有一个图像表,一个用于Jobs,一个用于用户。当用户发布作业时,我想从表格Image中自动分配该用户的图像。我不想在Job表中保存User ImageID,因为当公司想要更新徽标/图像时,它应该仅使用表Image和UserID自动更新所有作业,而不是使用ImageID更新行工作表。

这是我试过的:

    var listOfJobs = db.Jobs.AsEnumerable();

    var ProfileImage = db.Images.Where(
                     p => listOfJobs.Any(l => p.UserID == l.ApplicationUsers.Id)).ToList();

    return View(ProfileImage);

使用上面的代码,它会显示所有作业中Image表格中的所有图像。

我应该尝试加入?我有点不知道如何使用join,如果它适合这种情况,我就不知道。

非常感谢

1 个答案:

答案 0 :(得分:2)

您可以执行以下操作

1-添加新类/表JobImage如果您还没有,假设id类型为int,此表将存储每个作业及其相应的图像

public class JobImage
{
     public int JobID{get;set;}
     public int ImageID{get;set;}

     public Job {get;set;}
     public Image{get;set;}
}

2-现在您的查询将变为如下:

var ProfileImage = (from a in db.ApplicationUsers
                   join ij in db.JobImages on a.JobID equals ij.JobID
                   join i in db.Images on ij.ImageID equals i.ImageID
                   where a.UserID == **YourUserID**
                   select i).SingleOrDefault()

    return View(ProfileImage);

3-您可能会考虑的一些情况

  1. 我介绍新类/表的方式,包括JobID和ImageID 是主键和外键
  2. 您只能添加主键JobImageIDJobID以及ImageID外键,并且可以将IsActive添加为位和CreatedOn日期,以添加追踪历史
  3. 希望这会对你有所帮助