我有
table Users
(使用User.Id和
例如)
table Visibility
(User1Id和User2Id,都是Users表的外键)
table Contact
(User.Id使用外键将1:1联系人与用户联系)。
可见性表应允许用户查看其他用户的联系人以及他们自己的联系人。为此,允许User1查看User2的联系人(但反之亦然)。
现在,我正试图像这样查询,但显然它不起作用:
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
根据用户1
已经可以看到联系人{{1}的事实,我在查询UserID 10时从LINQ查询返回的内容是联系人3
和10
},由于1
表格也可以看到用户Visibility
的联系人20
。
3
希望有道理吗?
答案 0 :(得分:1)
Contact.Where(c=>c.UserId == userId || c.User.Visibilities.Any(v=>v.User1Id == userId))