C# 如果第二个表中有Id为的记录来自另一个表,则从该表中检索数据
我有2个上下文表,如果ID相等,我想从中选择数据 我想使用LINQ的fluent API来实现这一点 我想检查Movie中的Id是否等于MovieReview中的MovieId,如果是,请提供MovieReview中的审阅者姓名和Movie中的姓名 各表如下: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
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};