2010-04-04 3 views
0

Je crée une fonctionnalité de tag pour un forum en utilisant linq2sql, et j'ai deux tablesGroupby dans relationtable

[Tag]

  • TagId
  • TagName

[ForumTagRelation]

  • TagId
  • ForumID

Je voudrais récupérer, comme SO, tags les plus populaires.

J'ai essayé de le faire par:

List<Tag> popularTags = db.Tags.Select(x => x.ForumTagRelations.GroupBy(y => y.TagId).OrderByDescending(z => z.Count())).Take(count).ToList(); 

Mais ce juste renvoie l'erreur suivante:

Error 1 Cannot implicitly convert type 'System.Collections.Generic.List<System.Linq.IOrderedEnumerable<System.Linq.IGrouping<System.Guid?,SampleWebsite.ForumTagRelation>>>' to 'System.Collections.Generic.IEnumerable<SampleWebsite.Tag>'. An explicit conversion exists (are you missing a cast?)  

La question est de savoir comment je peux facilement retourner une liste de tags qui a le plus compte dans la table ForumTagRelation?

Répondre

1

Cela devrait être le:

List<Tag> popularTags = (db.Tags.Where(t => db.ForumTagRelations.GroupBy(gbftr => gbftr.TagID).OrderByDescending(obftr => obftr.Count()).Take(count).Any(ftr => ftr.Key == t.TagID)).Take(count)).ToList(); 
+0

Merci ça a marché! – Dofs