Вычислите среднее значение с помощью двух таблиц
В проекте у меня есть две таблицы
- Ресторан (RestaurantId, Название, Адрес)
- RestaurantReview (ReviewId, RestaurantId, Mark)
У одного ресторана может быть несколько мнений. Я бы хотел, чтобы мое приложение отображало ресторан и средние его рейтинги. Я создаю код:
var resReviews = ( from x in _context.Restaurant join y in _context.Reviews on x.IdRestauracji equals y.RestaurantId into z from a in z group a by a.RestaurantId into g select new { RatingAverage = g.Average(x => Convert.ToInt32(x.Mark)) } ).ToList();
В списке сохраняются рассчитанные средние отметки. Я также хотел бы, чтобы информация о ресторане была сохранена в списке. Я пытаюсь создать что-то вроде этого, но это не работает:
var resReviews = ( from x in _context.Restaurant join y in _context.Reviews on x.IdRestauracji equals y.RestaurantId into z from a in z group a by a.RestaurantId into g select new { Restaurant = g.FirstOrDefault(); RatingAverage = g.Average(x => Convert.ToInt32(x.Mark)) } ).ToList();
Что я уже пробовал:
var lj = (from x in _context.Restaurant join y in _context.Reviews on x.RestaurantId equals y.RestaurantId into z select new { Name= x.Name, Total = z.Average(x => Convert.ToInt32(x.Mark)) }).ToList();
возвращать ошибку:
System.InvalidOperationException: „Processing of the LINQ expression 'GroupJoin<Restaurant, Reviews, int, <>f__AnonymousType4<string, double>>( outer: DbSet<Restaurant>, inner: DbSet<Reviews>, outerKeySelector: (x) => x.RestaurantId, innerKeySelector: (y) => y.RestaurantId, resultSelector: (x, z) => new { Name = x.Name, Total = Average<Review>( source: z, selector: (x) => ToInt32(x.Marks)) })' by 'NavigationExpandingExpressionVisitor' failed.