Как составить правильный запрос EF с объединением свойств элементов разных коллекций?

Есть таблица, которая содержит объекты Favorite(id,account_id,product_id) и таблица продуктов Product(id,color,price...). Мне нужно получить продукты, которые удовлетворяют 2 условиям:

  1. id продукта из db.Products должно быть равно product_id из db.Favorite
  2. account_id из db.Favorite должно быть равно account.Id (переданный по параметру аккаунт)
           using (ApplicationContext db = new ApplicationContext())
            {
                var favorites = new ObservableCollection<Favorite>(db.Favorite.Where(a => a.AccountId == account.Id));
                var result = new ObservableCollection<Product>(db.Products.Where(a=>a.Id.Equals(from item in favorites select item.ProductId)));
        
                return result;
            }

Элементы favorites возвращает правильно, а result нет, скорее всего дело в .Equals(тут не один элемент) исходя из моего кода.


Ответы (1 шт):

Автор решения: maquim4
using (ApplicationContext db = new ApplicationContext())
            {
                var favorites = new ObservableCollection<Favorite>(db.Favorite.Where(a => a.AccountId == account.Id));
                var result = new ObservableCollection<Product>();
                foreach(var favorite in favorites)
                {
                    if (db.Products.Any(a => a.Id.Equals(favorite.ProductId)))
                    {
                        result.Add(db.Products.FirstOrDefault(a => a.Id.Equals(favorite.ProductId)));
                    }
                   
                }
                return result;
            }
→ Ссылка