concat - ошибка Value Buffer или чем заменить concat

204
12 апреля 2017, 11:44

Есть модель Категорий товаров.

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

READ ALSO
Как правильно остановить Task?

Как правильно остановить Task?

Останавливаю так:

312
Создание копии объекта

Создание копии объекта

Недавно я спрашивал про клонирование объекта, работая с такой структурой данных, как "Список"С методом клонирования разобрался

228
код не работает,в чем причина не пойму [требует правки]

код не работает,в чем причина не пойму [требует правки]

Это из книги Мартина Дрейера "C# для школьников" страница 46

204