Есть модель Категорий товаров.
public class Categories
{
public int Id { get; set; }
public string Name { get; set; }
public int? Parent_id { get; set; }
public ICollection<Products> Produkt { get; set; }
}
Где Parent_id это Id выше стоящей категории. В категории максимум два вложения. Основная -> Зависимая 1 -> Зависимая 2
Товар может находится как в Зависимой 1 так и в Зависимой 2. Как отобрать Все товары исходя из основной?
Пробовал вот так (Parent_id == 3 - это отбор по Id основной категории) :
public IActionResult Index()
{
var Cetegories1 = from c in _context.Categories.Where(c => c.Parent_id == 3)
from p in _context.Categories
where c.Id == p.Parent_id
select p;
var Cetegories2 = from c in _context.Categories.Where(c => c.Parent_id == 3)
select c;
var products1 = from p in _context.Products
from c in Cetegories1
where p.CategoriesId == c.CategoriesId
select p;
var products2 = from p in _context.Products
from c in Cetegories2
where p.CategoriesId == c.CategoriesId
select p;
var products = products1.Concat(products2);
return View(products);
}
В этом случае не получается присоединить никакие дочерние элементы.
Если идти от Категорий
public IActionResult Index()
{
var Cetegories1 = from c in _context.Categories.Where(c => c.Parent_id == 3)
from p in _context.Categories
where c.Id == p.Parent_id
select p;
var Cetegories2 = from c in _context.Categories.Where(c => c.Parent_id == 3)
select c;
var Cetegories = Cetegories1.Concat(Cetegories2);
var products = from p in _context.Products
from c in Cetegories
where p.CategoriesId == c.CategoriesId
select p;
return View(products);
}
То появляется ошибка Microsoft.EntityFrameworkCore.Storage.Value Buffer
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Недавно я спрашивал про клонирование объекта, работая с такой структурой данных, как "Список"С методом клонирования разобрался
Это из книги Мартина Дрейера "C# для школьников" страница 46