2011-12-03 29 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)) 
相關問題