我最近开始使用LINQ to SQL,我有一个需要帮助的小复杂查询。 我的数据库中有一个名为MovieComment的表,其中包含以下列:
所以,我想做的是将MovieID上的注释分组并保存到我的名为Movie的对象中,其中MovieID保存在MovieID帖子中,Linq对象保存在Movie对象内的ObservableCollection中。
public class Movie
{
#region Member Variables
public int MovieID { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public Uri Poster { get; set; }
public double Rating { get; set; }
public DateTime Timestamp { get; set; }
public ObservableCollection<MovieComment> Comments { get; set; } // Linq object: MovieComment
#endregion // Member Variables
}
我已经提出了以下linq查询,其中我获得了MovieID,但我真的不知道如何继续获取所有其他数据
public ObservableCollection<Movie> LoadMovieID(int _userID, int _limit)
{
ObservableCollection<Movie> movies = new ObservableCollection<Movie>();
var query = (from mc in db.MovieComment
where mc.UserID == _userID
orderby mc.Timestamp descending
group mc by mc.MovieID into movie
select new
{
MovieID = movie.Key,
}).Take(_limit);
foreach (var row in query)
{
Movie movie = new Movie();
movie.MovieID = row.MovieID;
// I want to get the following:
// movie.MovieComment = MovieComment-objects with the MovieID == row.MovieID
movies.Add(movie);
}
return movies;
}
这在单个查询中是否可行?感谢我能得到的所有帮助
答案 0 :(得分:5)
嗯,你可以试试这个:
var query = (from mc in db.MovieComment
where mc.UserID == _userID
orderby mc.Timestamp descending
group mc by mc.MovieID).Take(_limit);
这会给你一个IGrouping<MovieComment, string>
(或者你的类型),它可以让你在没有任何额外工作的情况下获得所有评论。就LINQ本身来说当然没问题,但是它是否会在LINQ to SQL中做你想做的事情,我不确定。