Я использую .NET Core 2.2, EF Core, C # и SQL Server 2017. Я не могу перевести нужный мне запрос в Linq.
Это запрос, который мне нужно преобразовать:
SELECT TOP 5
p.Id,
p.Title,
AVG(q.RatingValue) AvgRating
FROM Movies AS p
INNER JOIN Ratings AS q ON p.Id = q.MovieId
GROUP BY p.Id, p.Title
ORDER BY AvgRating DESC, p.Title ASC
Идея предыдущего запроса состоит в том, чтобы получить Топ-5 фильмов в соответствии со средним рейтингом, упорядочив их сначала по наибольшему среднему значению, а в случае того же среднего порядка по алфавиту.
ИтакПока это мой запрос, который делает соединение, но затем все еще отсутствует: группировка по, среднему и порядку:
public class MovieRepository : IMovieRepository
{
private readonly MovieDbContext _moviesDbContext;
public MovieRepository(MovieDbContext moviesDbContext)
{
_moviesDbContext = moviesDbContext;
}
public IEnumerable<Movie> GetTopFive()
{
var result = _moviesDbContext.Movies.OrderByDescending(x => x.Id).Take(5).
Include(x => x.Ratings);
return result;
}
}
А это сущности:
public class Movie
{
public int Id { get; set; }
public string Title { get; set; }
public int YearOfRelease { get; set; }
public string Genre { get; set; }
public int RunningTime { get; set; }
public IList<Rating> Ratings { get; set; }
}
public class Rating
{
public int Id { get; set; }
public int MovieId { get; set; }
public int UserId { get; set; }
public decimal RatingValue { get; set; }
}
Я пыталсяиспользовать инструмент Linqer также для преобразования моего запроса в Linq, но он не работал.
Буду признателен за любую помощь в преобразовании этого запроса в LINQ для метода "GetTopFive".
Спасибо