【发布时间】:2014-03-23 07:14:22
【问题描述】:
我有两个表 - 用户和关注。下表定义了两个用户,被关注的用户和被关注的用户。想想 Twitter 关注这样的想法。
我想做一个推荐人页面。这将按照其感知相关性的顺序建议追随者的追随者。
所以如果我有 A 人。
他跟着B和C
如果 B 和 C 都关注 D,而 B 关注 E。D 的相关性应该高于 E,以此类推。
有人可以帮我构建一个查询,以尽可能快的方式完成此操作。考虑到拥有大量追随者的人的潜力。
最终,我想要一个页面显示 - 看看这些人:你关注的人中有 4 人正在关注约翰。
我的表格示例
public class User
{
public long UserId { get; set; }
public string Name { get; set; }
}
public class Follow
{
public long FollowId { get; set; }
public User Follower { get; set; }
public User Following { get; set; }
}
编辑 - 基于 Patrick Mcdonalds 答案的当前查询
var query = from follow in db.Follows
where follow.WhoIsFollowing == mee
let friend = follow.WhoTheyAreFollowing
from friendOfFriend in db.Follows
where friendOfFriend.WhoIsFollowing == friend
group friendOfFriend by friendOfFriend.WhoTheyAreFollowing into g
where g.Key != mee
select new { UserId = g.Key, Count = g.Count() };
【问题讨论】:
标签: c# asp.net linq entity-framework