2010-05-30 4 views
2

J'ai trois tables:LINQ select m: n utilisateur: groupes

cp_user (id, name) 
cp_group (id, name) 
cp_usergroup (user_id, group_id) 
  • m classique: n stuff.

On suppose les données suivantes:

cp_user 
1, Paul 
2, Steven 

cp_group 
1, Admin 
2, Editor 

cp_usergroup 
1, 1 
1, 2 
2, 2 

Alors Paul est dans le groupe d'administration et rédacteur en chef, alors que Steven est juste dans le groupe de l'éditeur. Je veux générer une liste comme celle de la base de données:

Paul Admin 
Paul Editor 
Steven Editor 

Des suggestions?

Merci! Clemens

Répondre

2

Un de mes amis me aidé à ce sujet:

var q = db2.cp_users.SelectMany(
      u => u.cp_groups.Select(
       g => new { Username = u.name, Groupname = g.name })); 

fonctionne bien pour moi. Est-il possible de le faire dans la syntaxe de requête?

1

Dans la syntaxe de requête:

from u in db2.cp_users 
from g in u.cp_groups 
select new { Username = u.name, GroupName = g.name } 
+0

Hmmm, désolé de le dire, mais cela revient Paul Administrateur Steven Administrateur Paul Editeur Steven Editeur Il semble que les tables sont juste croisées joints. – blacktarmac

+0

Êtes-vous en train de dire que la première solution (en syntaxe courante) renvoie les résultats que vous voulez, mais pas l'expression de la requête? –

Questions connexes