J'ai la tableRejoindre requêtes avec Entity Framework
MOVIES_RATING:
MovieID int
MovieRating decimal
Je voudrais obtenir 2 valeurs à l'aide d'une requête:
select COUNT(*)
FROM [dbo].[MOVIES_RATING]
where [dbo].[MOVIES_RATING].[MovieID] = 78
et
select SUM([dbo].[MOVIES_RATING].Rating)
FROM [dbo].[MOVIES_RATING]
where [dbo].[MOVIES_RATING].[MovieID] = 78
C'est ce que je suis arrivé dans LINQ:
(from p in ef.MOVIES_RATING.Where(r => r.MovieID== movie_id)
let movieRates = ef.MOVIES_RATING.Where(r => r.MovieID == movie_id)
let count = movieRates.Count()
let averageUserRating = movieRates.Sum(c => c.MOVIES_RATING)/count
select new MovieRating {AverageUserRating = averageUserRating, VoteCount = count})
.Take(1);
est affreux, ainsi que SQL généré:
SELECT
[Limit1].[MovieID] AS [MovieID],
[Limit1].[C2] AS [C1],
[Limit1].[C1] AS [C2]
FROM (SELECT TOP 1
[GroupBy1].[A1] AS [C1],
[Extent1].[MovieID] AS [MovieID],
[GroupBy2].[A1]/CAST([GroupBy1].[A1] AS decimal(19,0)) AS [C2]
FROM [dbo].[MOVIES_RATING] AS [Extent1]
CROSS JOIN (SELECT
COUNT(1) AS [A1]
FROM [dbo].[MOVIES_RATING] AS [Extent2]
WHERE [Extent2].[MovieID] = 78) AS [GroupBy1]
CROSS JOIN (SELECT
SUM([Extent3].[Rating]) AS [A1]
FROM [dbo].[MOVIES_RATING] AS [Extent3]
WHERE [Extent3].[MovieID] = 78) AS [GroupBy2]
WHERE [Extent1].[MovieID] = 78
) AS [Limit1]
Je ne suis pas sûr qu'il est préférable solution, de sorte que toute aide est appréciée.
Je sais que cela peut être fait en utilisant la procédure stockée, mais si cela pourrait être fait en utilisant LINQ ce serait mieux.
qui fonctionne aussi, merci! – bogert
Mmmmmmmm. Agrégation. : -O – Arrow