【发布时间】:2013-12-28 14:48:08
【问题描述】:
我有 2 个上下文表,如果 id 相等,我想从中选择数据。
我想使用 LINQ 的 fluent API 来做到这一点。
我想检查Movie 中的Id 是否等于MovieReview 中的MovieId,如果是,则显示来自MovieReview 的ReviewerName,以及来自Movie 的Name
这些表格是:
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; }
}
非常感谢任何帮助。
到目前为止,我什至不确定我是否关闭: 变种模型 = _db.电影 .Join(_db.Reviews, g => g.Id, u => u.MovieId, (g,u) => new { MovieReview = u, Movie = g}) .Where( (g => g.Movie 选择(r => 新的 AdminReviewListViewModels { Id = g.Id, 姓名 = g.姓名, 导演 = g.导演, ReleaseDate = g.ReleaseDate, 流派 = g.流派, CountOfReviews = g.Reviews.Count(), 用户名 = u.ReviewerName });
【问题讨论】:
-
既然
Movie有ICollection<MovieReview>,为什么还要匹配?movie.Reviews不会让你们都关联MovieReviews 吗? -
您是在使用实体框架还是这只是您构建的一组 POCO?
-
我正在使用实体框架是的,ICollection 只是为了收集评论,我在“Movie”中设置了 Id,在 MovieReview 中设置了 MovieId,以便将来我可以进行这种比较桌子之间。到目前为止我有: var model = _db.Movies .Join(_db.Reviews, g => g.Id, u => u.MovieId, (g,u) => new { MovieReview = u, Movie = g}) .Where( (g => g.Movie select (r => new AdminReviewListViewModels { Id = g.Id, Name = g.Name, Director = g.Director, ReleaseDate = g.ReleaseDate, Genre = g.Genre, CountOfReviews = g.Reviews.Count(), UserName = u.ReviewerName });