у меня
table Users
(с User.Id и
например)
table Visibility
(User1Id и User2Id, оба являются внешними ключами таблицы Users)
table Contact
(User.Id с внешним ключом, связывающим 1: 1 контакт с пользователем).
Таблица видимости должна позволять пользователям просматривать других контактов пользователя, а также свои собственные. Для этого Пользователь1 может видеть контакты Пользователя2 (но не наоборот).
Теперь я пытаюсь сделать запрос вот так, но, очевидно, он не работает:
Contact.Where(c => c.UserId == userId || c.UserId IN c.User.Visibilities)
- по сути, я пытаюсь вернуть 1. все записи Контактов, которые имеют предоставленный UserId (это просто и уже работает, конечно) и , чтобы вернуть все связанные Контакты, с другим пользователем, но указанный пользователь связан с этим другим пользователем через User1: User2 в таблице видимости.
Чтобы получить полный пример:
Users
=====
UserId Name
10 John
15 Sasha
20 Marcus
Visibility
==========
User1Id User2Id
10 20
Contact
=======
ContactId UserId Zip
1 10 23232
2 15 55555
3 20 92929
Что бы я хотел получить из запроса LINQ при запросе идентификатора пользователя 10, это контакты 1
и 3
, основываясь на том факте, что пользователь 10
уже может видеть контакт 1
, а также на Visibility
Таблица также может видеть пользователя 20
контакт 3
.
Result (when querying for user 10)
======
ContactId UserId Zip
1 10 23232
3 20 92929
Надеюсь, что имеет смысл?