如何在实体框架中加入groupby
在我的项目中,我为实体框架使用了代码优先的方法。如何在实体框架中加入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
我在网上搜索,但找不到任何类似的问题。
谢谢。
尝试:
var query = (from t in ctx.Tags.Include("Posts")
orderby t.Posts.Count() descending
select t).Take(10).ToList();
查询得到的所有排名前10位的标签是什么。我想获得前10名的标签。例如“c#”3次,而“mvc”第一次使用10次和其他用途,我想通过使用例如“mvc”来命令第一次。 –
您的查询为每个标签返回“1”。你应该通过'Post'加入表 –
你不必使用group by。我编辑了答案。那是你需要的吗? –
显示您的类的结构和你试过到目前为止 –
@FabioLuz更新 –