LINQ to SQL Group по проблеме C # - PullRequest
       17

LINQ to SQL Group по проблеме C #

1 голос
/ 23 сентября 2010

Я недавно начал использовать LINQ to SQL, и у меня есть небольшой сложный запрос, с которым мне нужна помощь. В моей базе данных есть таблица MovieComment со следующими столбцами:

  • CommentID
  • Идентификатор_пользователь
  • MovieID
  • Комментарий
  • Отметка

Итак, я хочу сгруппировать комментарии к MovieID и сохранить их в моем объекте MovieID, где MovieID сохраняется в записи MovieID, а объект Linq сохраняется внутри ObservableCollection внутри объекта Movie.

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;
}

Возможно ли это даже в одном запросе? Благодарю за помощь, которую я могу получить

1 Ответ

5 голосов
/ 23 сентября 2010

Ну, вы можете попробовать это:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...