我有一个网络应用程序,我有一个日记,这个日记有很多用户的帖子。我有我的帐户,我有我的日记,但只有我的朋友和粉丝才能看到我的日记帖子。
我的问题是,我怎样才能让我的朋友和粉丝看到我的日记帖子?这个查询怎么会这样?
我相信在这个查询中只会插入3个表:
My DiaryPosts表:
-------------------------
| ID | UserID | Content |
-------------------------
我的好友表:
--------------------------
| ID | UserID | FriendID |
--------------------------
我的粉丝表:
----------------------------
| ID | UserID | FollowerID |
----------------------------
我如何在选择一系列朋友的情况下执行查询,并且只允许他们查看我的日记帖子?
答案 0 :(得分:0)
我认为你可能会倒退。您无需选择允许查看帖子的一系列人员。您需要过滤人们可以看到规则允许的帖子,不是吗?
如果是这种情况,那么对于任何寻找日记帖子的用户,如果有以下任何一个,请返回帖子:
a)DiaryPosts中的UserID是Friends中的UserID,其ID是FriendID,或者 b)DiaryPosts中的UserID是Followers中的UserID,其ID是FollowerID
(a)假设他们是你的朋友,但不一定相反。如果你是他们的朋友而不是反过来,并且你希望他们看到你的帖子,你将不得不添加额外的逻辑。
因为您需要适用于朋友或关注者条件的行,所以您将需要左连接。
我没时间测试这个,所以语法可能有点粗糙,但我认为你可以从这样的事情开始:
var x = from D in DiaryPosts
from Fr in Friends
where (w => w.UserID = D.UserID)
.DefaultIfEmpty()
from Fo in Followers
where (w => w.UserID == D.UserID)
.DefaultIfEmpty()
where Fr.FriendID = myID | Fo.FriendID = myID
select {D};
这应该返回您是朋友的所有帖子或者海报的关注者。如果您确实只想要一个可以看到您帖子的朋友和关注者ID列表,请告诉我,我会尝试发布。
答案 1 :(得分:0)
您的朋友和粉丝名单ID:
var Result = Friends.Where(p=>p.UserID==YourId).Select(p=>p.FriendID)
.Concat(Followers.Where(p=>p.UserID==YourId).Select(p=>p.FollowerID))