Как я могу преобразовать это соединение в синтаксис LINQ?

#c# #linq #entity-framework

#c# #linq #entity-framework

Вопрос:

Я хочу получить все инструменты, используемые продуктами с X = 14 , как я могу преобразовать этот select в LINQ?

 SELECT DISTINCT t.* FROM Product p
INNER JOIN ProductTool pt ON pt.Product_ID = p.ID
INNER JOIN Tool t ON t.ID = pt.Tools_ID
WHERE p.X = 14
  

Это GroupJoin то, что мне нужно или что?

 tools.GroupJoin(products, t=>, p=>, ...)
products.GroupJoin(tools, p=>, t=>, ...)
  

Ответ №1:

Если у вас правильно настроены внешние ключи, entity framework должна установить эту связь, и вы сможете просто выполнить:

var tools = from p in products where p.X == 14 select p.Tool;

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

1. Спасибо, это меня очень просветило… На самом деле это очень просто return context.Product.Where(p => p.X == id).SelectMany(t => t.Tools).Distinct().ToList();