Вы ищете метод Включить .
var query = db.Products.Include("Categories");
Это обычно называется нетерпеливая загрузка .
Entity Framework будет «выводить» ограничение JOIN на основе указанного вами сопоставления.
«Волшебная строка» должна соответствовать имени набора сущностей на вашем EDMX.
Проверьте этот пост для получения дополнительной информации.
EDIT
Я немного сбит с толку относительно того, хотите ли вы Продукты и Категории или только продукты, которые имеют определенный ID категории.
Если последнее, то это путь:
var query = from p in db.products
join c in db.categories
on p.CategoryId equals c.CategoryId
where c.CategoryId == someCategoryId
select p;
Имейте в виду, что приведенный выше запрос в точности совпадает с исходным запросом.
Если p является продуктом, то p.Categories будет искать Навигационное свойство вашей сущности продукта на EDMX, в этом случае это будет ваша категория FK.
Пока вы правильно настраиваете навигационные свойства, с p.Categories все в порядке.