Есть две модели Категории:
public class Categories
{
public int CategoriesId { get; set; }
public int? StoroniyId { get; set; }
public string Name { get; set; }
public int? Parent_id { get; set; }
public ICollection<Products> Produkt { get; set; }
}
Parent_id идентификатор родительской категории
Модель Товары
public class Products
{
public int ProductsId { get; set; }
public string Name { get; set; }
public int CategoriesId { get; set; }
public virtual Categories Categoria { get; set; }
public int Possition { get; set; }
public bool Glass { get; set; }
public decimal price_opt { get; set; }
public decimal price_rrc { get; set; }
}
Никак не получается отобрать товары по родительской категории:
public async Task<IActionResult> Index()
{
var CatId = await _context.Categories.Where(c => c.Parent_id == 3).ToListAsync();
var applicationDbContext = _context.Products.Where(c => CatId.Equals(c.CategoriesId));
return View(await applicationDbContext.ToListAsync());
}
Как в этом случае правильно прописать оператор Where
Ответ дали на англоязычной версии:
Вы должны изменить соответствующую строку в строке ниже
var applicationDbContext = _context.Products.Where(c => CatId.Any(cat => cat.CategoriesId == c.CategoriesId));
Вы получаете список категорий в первом where пункте , так что вы должны проверить , если принадлежит продукту ко всем таким категориям.
Я хотел бы сделать это немного по-другому, хотя
var products = from c in _context.Categories
from p in _context.Products
where c.CategoriesId == p.CategoriesId && c.Parent_id == 3
select p;
return View(await products.ToListAsync());
Ссылка на оригинал Ответа
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости