2012-01-04 137 views
2

我有這個作爲我的模型;LINQ選擇查詢

enter image description here

我正在尋找的是一個LINQ表達式,可以給我UserActivity記錄,通過所有的用戶朋友UserActivity.DateTime排序。

換句話說,如果一個用戶有三個朋友,那麼我想要這三個朋友的活動記錄。

我試過使用.In.Contains但我的LINQ目前很差。

或任何人都可以提出一個不同的模型,會給我相同的結果嗎?

+0

人力資源管理模式,如果你添加一個字段'FriendUserId'到'aspnet_User'會發生什麼,有自引用外鍵 - 這將打破'ASPNET schema'?!?!你的模式可能是最好的,而不是修改'aspnet模式' – xandercoded 2012-01-04 03:42:13

+0

可能不是,但寧願不這樣做 – griegs 2012-01-04 03:44:03

+1

我應該也許UserFriend.FriendUserId UserActivity.UserId? – griegs 2012-01-04 03:46:31

回答

1

我不知道如果這能幫助或沒有,但它是在我頭上,我甚至沒有測試它:-)希望這有助於。 USER_ID是您想要查看其朋友活動的用戶。

from a in UserActivity 
where 
    (
    from f in UserFriend 
    where f.Userid == USER_ID 
    select f.FriendUserId 
) 
    .Distinct().ToList().Contains(a.UserId) 
order by a.DateTime 
select a; 
+0

感謝您的支持。這工作就像一種享受。 – griegs 2012-01-04 05:05:30

3

如果你有你想要的朋友活動,這樣的事情誰的用戶的用戶ID應與您攜手當前模式:

var results = from user in aspnet_User 
       join friend in UserFriend on user.UserId equals friend.UserId 
       join activity in UserActivity on activity.UserId equals friend.FriendUserId 
       where user.UserId == someUserId 
       orderby activity.DateTime ascending 
       select activity; 
+1

我是否應該將UserFriend.FriendUserId與UserActivity.UserId關聯? – griegs 2012-01-04 03:46:53

+0

這是類,而不是表。你應該添加引用而不是fks。 – ivowiblo 2012-01-04 03:56:02

+0

我喜歡這個,但是喜歡@Qorbani,因爲它不需要連接。 – griegs 2012-01-04 05:06:02