2010-05-24 5 views
1

Salut, je me demande comment je peux aller sur ce problèmetrouver des utilisateurs qui suivent d'autres utilisateurs

J'ai un DB avec les utilisateurs de table, et une table de suiveurs. Le tableau Followers contient 2 colonnes « FollowerID » et « FollowedID » J'ai 1 -> * par rapport à mon datamodel entre Users.ID -> Followers.FollowerID et Users.ID -> FollowedID

Comment puis-je en LINQ obtenir un ensemble d'utilisateurs qui suivent un utilisateur spécifique ?

Je vais exprimer ce que je suis en train de réaliser programatically je peux obtenir jusqu'ici:

ctx.Followers.Where(f => f.FollowedID == CurrentUser.ID) 

maintenant j'ai un Suiveurs mis où j'ai l'ID des utilisateurs qui suivent le CurrentUser, et je pourrais passer en revue cette collection et ajouter des utilisateurs après chaque itération à une collection qui serait une collection totale d'UTILISATEUR qui a suivi CurrentUser, mais n'y a-t-il pas une manière plus intelligente, ou LINQ'er de faire ceci?

Très apprécié

Thx

+0

Maintenant, je peux voir pourquoi Twitter a autant de problèmes de production. – Zombies

+0

Hehe Zombies: D thx pour éditer mon post Justin – Jakob

Répondre

0
ctx.Followers.Where(f => f.FollowedID == CurrentUser.UserId) 
      .Select(f => f.FollowerUser).Distinct() 

Si vous avez un EntityRef pour le FollowerID (par exemple le nom FollewerUser), vous pouvez l'utiliser pour obtenir tous les utilisateurs après un ID particulier

+0

Je vois, mais alors comment obtenir une référence d'entité pour un utilisateur? Je pensais, je ferais cela avec la relation, mais tout ce que j'ai est l'ID – Jakob

+0

Utilisez-vous LINQ-To-SQL ou EntityFramework? Avec LINQ-To-SQL, vous devez configurer une relation de clé étrangère dans votre DBML. Je crois que EF est similaire mais pas vraiment sûr. – Stephan

+0

J'utilisais EntityFramework, à cause d'un Domain Service, mais je pense que je vais juste passer à LINQ-To-SQL car je sais que mieux aussi – Jakob

Questions connexes