Как реализовать динамическое левое внешнее соединение linq (linq.dynamic.core)

#c# #linq #entity-framework-core #linq-to-entities

#c# #linq #entity-framework-core #linq-to-entities

Вопрос:

Я пытаюсь заставить left outer join работать с linq dynamic, идеи, которые я получил, заключаются в том, что мне нужно использовать групповое объединение с select many, поэтому я думаю, что мне нужно перевести следующий пример в linq dynamic, но я не могу получить правильный синтаксис

пожалуйста, помогите перевести этот код linq в Dynamic Linq

 db.Categories    
  .GroupJoin(db.Products,
      Category => Category.CategoryId,
      Product => Product.CategoryId,
      (x, y) => new { Category = x, Products = y })
  .SelectMany(
      xy => xy.Products.DefaultIfEmpty(),
      (x, y) => new { Category = x.Category, Product = y })
  .Select(s => new
  {
      CategoryName = s.Category.Name,     
      ProductName = s.Product.Name   
  });
  

Спасибо

Комментарии:

1. Создайте / используйте свойства навигации и забудьте о соединениях.

2. Спасибо, к сожалению, две таблицы не связаны, поэтому, насколько я знаю, это не вариант

3. Работает ли ваш linq с таблицами в памяти?

4. Этот linq отлично работает и выдает результат left outer join, его можно упростить как linq, но я поместил этот формат GroupJoin SelectMany, потому что eveybody говорит, что это единственный способ, которым он может работать с Dynamic Linq, но не нашел подходящего примера о том, как это сделать с Dynamic Linq