LINQ选择查询

时间:2012-01-04 03:35:39

标签: c# linq linq-to-sql

我有这个作为我的模特;

enter image description here

我正在寻找的是一个LINQ表达式,它可以为我提供UserActivity记录,按所有用户朋友的UserActivity.DateTime排序。

换句话说,如果用户有三个朋友,那么我想要这三个朋友的活动记录。

我尝试过使用.In.Contains,但我的LINQ目前很差。

或者任何人都可以建议一个能给我相同结果的不同模型吗?

2 个答案:

答案 0 :(得分: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 :(得分: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;