C# 如果第二个表中有Id为的记录来自另一个表,则从该表中检索数据

C# 如果第二个表中有Id为的记录来自另一个表,则从该表中检索数据,c#,linq,C#,Linq,我有2个上下文表,如果ID相等,我想从中选择数据 我想使用LINQ的fluent API来实现这一点 我想检查Movie中的Id是否等于MovieReview中的MovieId,如果是,请提供MovieReview中的审阅者姓名和Movie中的姓名 各表如下: public class MovieReview { public int Id { get; set; } [Range(1,10)] [Required] public int Rating { ge

我有2个上下文表,如果ID相等,我想从中选择数据

我想使用LINQ的fluent API来实现这一点

我想检查Movie中的Id是否等于MovieReview中的MovieId,如果是,请提供MovieReview中的审阅者姓名和Movie中的姓名

各表如下:

public class MovieReview
{
    public int Id { get; set; }

    [Range(1,10)]
    [Required]
    public int Rating { get; set; }

    [Required]
    [StringLength(1024)]
    public string Body { get; set; }

    [Display(Name="User Name")]
    [DisplayFormat(NullDisplayText="anonymous")]
    public string ReviewerName { get; set; }
    public int MovieId { get; set; }


public class Movie
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Director { get; set; }
    public DateTime ReleaseDate { get; set; }
    public string Genre { get; set; }
    public virtual ICollection<MovieReview> Reviews { get; set; }
}
非常感谢您的帮助

到目前为止我做了。。甚至不确定我是否接近: var模型= _db.电影 .Join_db.Reviews,g=>g.Id,u=>u.MovieId,g,u=>new{MovieReview=u,Movie=g} .其中g=>g.电影 选择r=>new AdminReviewListViewModels { Id=g.Id, Name=g.Name, 董事, ReleaseDate=g.ReleaseDate, 体裁, CountOfReviews=g.Reviews.Count, 用户名=u.name };

您可以使用:

context.Set<MovieReview>().Select(c=>new{c.ReviewerName, c.Movie.Name})

如果您只需要一个包含MovieName和ReviewerName属性的匿名可枚举文件,那么这应该是可行的

using (var _db = new YourDbContext())
{
    var movies = _db.Movies;
    var movieReviews = _db.MovieReviews;

    var results = movies.Join(movieReviews, 
        m => m.Id,
        mr => mr.MovieId,
        (m, mr) => new { MovieName = m.Name, ReviewerName = mr.ReviewerName }).ToList();
}

既然电影有ICollection,为什么需要匹配?movie.Reviews不会让你所有的MovieReview都关联起来吗?你是在使用实体框架还是这只是你建立的一组POCO?我在使用实体框架是的,ICollection只是为了收集一组评论,我在movie中设置Id,在MovieReview中设置MovieId,以便将来我可以在表之间进行这种比较。到目前为止,我有:var model=\u db.Movies.Join\u db.Reviews,g=>g.Id,u=>u.MovieId,g,u=>new{MovieReview=u,Movie=g}。其中g=>g.Movie select r=>new adminireviewListViewModels{Id=g.Id,Name=g.Name,Director=g.Director,ReleaseDate=g.ReleaseDate=g.ReleaseDate,Genre=g.Genre,CountOfReviews=g.Count=g.ReviewerName};