LINQ查询朋友提要:如何只让我的朋友看到​​我的帖子更新?

时间:2011-12-03 15:28:25

标签: linq asp.net-mvc-3 c#-4.0 social-networking

我有一个网络应用程序,我有一个日记,这个日记有很多用户的帖子。我有我的帐户,我有我的日记,但只有我的朋友和粉丝才能看到我的日记帖子。

我的问题是,我怎样才能让我的朋友和粉丝看到我的日记帖子?这个查询怎么会这样?

我相信在这个查询中只会插入3个表:

My DiaryPosts表:

-------------------------
| ID | UserID | Content |
-------------------------

我的好友表:

--------------------------
| ID | UserID | FriendID |
--------------------------

我的粉丝表:

----------------------------
| ID | UserID | FollowerID |
----------------------------

我如何在选择一系列朋友的情况下执行查询,并且只允许他们查看我的日记帖子?

2 个答案:

答案 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))