Как составить правильный запрос EF с объединением свойств элементов разных коллекций?
Есть таблица, которая содержит объекты Favorite(id,account_id,product_id) и таблица продуктов Product(id,color,price...). Мне нужно получить продукты, которые удовлетворяют 2 условиям:
- id продукта из db.Products должно быть равно product_id из db.Favorite
- 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;
}