2011-12-03 85 views
0

我有一个Web应用程序,我有一个日记,这个日记有很多用户的帖子。我有我的帐户,我有我的日记,但只有我的朋友和追随者可以看到我的日记帖子。针对朋友的LINQ查询feed:如何仅允许我的朋友查看我的帖子更新?

我的问题是,我怎样才能让我的朋友和追随者看到我的日记帖子?这个查询将如何?

我相信,只有3个表将被插入在此查询:

我DiaryPosts表:

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

好友表:

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

我的追随者表:

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

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

+0

你真的想选择的人的名单允许看到您的文章,或者你需要过滤用户看到,只有那些允许的帖子你的规则? – nycdan

+0

我需要过滤德帖=) –

回答

0

我想你可能会背道而驰。你不需要选择一系列被允许看到你的帖子的人。你需要过滤人们可以看到规则允许的人的帖子,不是?

如果是这样的话,那么对于寻找日记的帖子的任何用户,返回后如果任:

一)DiaryPosts的用户ID是在朋友的用户名,他们的ID是FriendID,或 b )DiaryPosts中的UserID是追随者中的用户ID,其ID是追随者ID

(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列表,请告诉我,我会尽力发布。

+0

我无法得到它,我试图执行与我的所有需求的请求,但我不能这样做。任何其他样本? –

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)) 
相关问题