2016-07-07 5 views
0

J'ai deux tables, group et group_user_xref.Linq joindre avec compte

J'ai besoin de lister les groupes avec une colonne qui compte le nombre d'utilisateurs dans ce groupe. A la minute où le comte je semble compter que le groupe car il retourne toujours 1.

Jusqu'à présent, j'ai:

(from g in db.group 
join g2 in db.group_user_xref 
on g.ID equals g2.group_uid 
where g2.user_uid == user_auth_id 
group g by new { g.ID, g.group_name, g.group_code, g.owner_id, g2.user_uid} into x 
select new GroupSummary { ID = x.Key.ID, GroupOwner = x.Key.owner_id, GroupCode = x.Key.group_code, GroupName = x.Key.group_name, GroupCount = x.Count() }).ToList(); 

Comment puis-je obtenir les comptes des utilisateurs dans chaque groupe?

Répondre

1

Vous group by ajouté au aussi user id - il vous donne un groupement pour chaque utilisateur dans chaque groupe - et que le count est un

(from g in db.group 
join g2 in db.group_user_xref 
on g.ID equals g2.group_uid 
where g2.user_uid == user_auth_id 
group g by new 
{ 
    g.ID, 
    g.group_name, 
    g.group_code, 
    g.owner_id 
} into x 
select new GroupSummary 
{ 
    ID = x.Key.ID, 
    GroupOwner = x.Key.owner_id, 
    GroupCode = x.Key.group_code, 
    GroupName = x.Key.group_name, 
    GroupCount = x.Count() 
}).ToList() 
+0

Vraiment il faut simplement faire 'g2 groupe par g en x ' – juharr

+0

@juharr Je peux - J'ai juste essayé de le garder plus proche de ce qu'il a fait - donc c'est plus clair. Bien sûr, dans son code à la fin, il vaut mieux qu'il fasse ce que vous avez écrit –

+0

@GiladGreen merci pour votre aide – Dave