как получить связанные записи с помощью LINQ - PullRequest
1 голос
/ 26 сентября 2010

Здравствуйте, у меня есть такая структура таблицы:

**ProductsTable**
ProductID
ProductName

**CategoriesTable**
CategoryID
CategoryName

**ProductCategories**
ProductID
CategoryID

Каждый продукт может принадлежать нескольким категориям. Теперь мне нужен способ найти сопутствующие товары. Но я хочу это так:

Допустим, продукт1 принадлежит ноутбуку, аксессуарам. Таким образом, могут быть получены только те продукты, которые принадлежат к обеим категориям (а не только к одной).

SQL Query будет работать, однако, если вы можете дать LINQ, это будет лучше.

Заранее спасибо

Марк В.

1 Ответ

1 голос
/ 26 сентября 2010

Обновление

Вот мое решение sql с настройкой:

declare @p table(id int, name varchar(10))
declare @c table(id int, name varchar(10))
declare @pc table(pid int, cid int)

insert into @p (id, name) values (1, 'laptop')
insert into @p (id, name) values (2, 'desktop')
insert into @p (id, name) values (3, 'milk')

insert into @c (id, name) values (1, 'computer')
insert into @c (id, name) values (2, 'device')
insert into @c (id, name) values (3, 'food')

insert into @pc (pid, cid) values (1, 1)
insert into @pc (pid, cid) values (1, 2)
--insert into @pc (pid, cid) values (1, 3)
insert into @pc (pid, cid) values (2, 1)
insert into @pc (pid, cid) values (2, 2)
insert into @pc (pid, cid) values (3, 3)


declare @productId int;
set @productId = 1;

select * 
from @p p 
where  
--count of categories that current product shares with the source product 
--should be equal to the number of categories the source product belongs to
(
select count(*) 
from @pc pc 
where pc.pid = p.id
and pc.cid in (
      select cid from @pc pc
      where pc.pid = @productId
  )
) = (select count(*) from @pc pc where pc.pid = @productId)
and
p.id <> @productId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...