2015-09-05 28 views
0

在我的項目中,我爲實體框架使用了代碼優先的方法。如何在實體框架中加入groupby

我有兩個表:

  • Tags:ID,姓名

  • Post:ID,標題,正文,List<tag>標籤

各崗位能夠有一些標籤,和一些標籤重複幾個職位,這些表之間的關係是多對多的。

public class post 
{ 
    public int Id { get; set; } 
    public int Title { get; set; } 
    public int Body { get; set; } 

    public ICollection<Tag> Tags { get; set; } 
} 

public class Tag 
{ 
    public int Id { get; set; } 
    public int Name { get; set; } 

    public ICollection<Post> Posts { get; set; } 
} 

我用這個代碼,但它是不行的:

var tags = db.posts.GroupBy(x => x.tags.Select(c => c.name)).Take(10).ToList(); 

我想獲得前10名的標籤,但我不能這樣做。

我想EF做不LINQ

我在網上搜索,但找不到任何類似的問題。

謝謝。

+0

顯示您的類的結構和你試過到目前爲止 –

+0

@FabioLuz更新 –

回答

1

嘗試:

var query = (from t in ctx.Tags.Include("Posts") 
      orderby t.Posts.Count() descending 
      select t).Take(10).ToList(); 
+0

查詢得到的所有排名前10位的標籤是什麼。我想獲得前10名的標籤。例如「c#」3次,而「mvc」第一次使用10次和其他用途,我想通過使用例如「mvc」來命令第一次。 –

+0

您的查詢爲每個標籤返回「1」。你應該通過'Post'加入表 –

+0

你不必使用group by。我編輯了答案。那是你需要的嗎? –