2013-11-30 2 views
0

Итак, у меня есть база данных, в которой есть таблица «Проекты», «Пользователи» и «ProjectMembers», таблица «Проекты» имеет столбец «Идентификатор» и столбец «ProjectOwner», который является внешним ключом из таблицы «Пользователи», таблица «Пользователи» имеет идентификаторы, столбцы «Имя пользователя» и таблицу «ProjectMembers» имеет идентификатор, идентификатор ProjectID и UserID, а более поздние 2 столбца являются внешними ключами из таблицы Projects и таблицы Users.Как написать запрос linq, сравнивающий 2 таблицы?

В основном проект - это то, что управляет проектами, пользователь может создать проект, который делает их владельцем, а затем другим пользователям можно назначить этот проект, который добавляет запись в таблицу ProjectMembers.

Я пытаюсь написать запрос linq, который выбирает все записи из таблицы Projects, где конкретный пользователь не является ProjectOwner, но они являются ProjectMember в таблице ProjectMembers?

Я сделал различные попытки, но до сих пор не смог получить запрос правильно.

ответ

0

Вы можете сделать несколько from статей:

from e1 in table1 
from e2 in table2 
where e1.key == e2.id 
select e1.name 
+0

Я пытался что-то подобное, но для этого нужно возвращать записи, которые содержат значение в 1 таблице, а не другую. – will

0

Попробуйте это:

from x in Users 
where ProjectMembers.Any(y => y.UserID==x.ID) && 
!ProjectOwners.Any(z => z.ProjectOwner==x.ID) 
select x; 
2

Что-то, как это должно работать:

from p in Projects 
    join m in ProjectMembers on m.ProjectID equals p.ID 
    where m.UserID == userID && p.ProjectOwner != userID 
    group p by p.ID 
    select p 
Смежные вопросы