C# 按子女数(包括此数)查询顶级家长的Linq
在我的模型中,通过表C# 按子女数(包括此数)查询顶级家长的Linq,c#,linq,entity-framework-core,C#,Linq,Entity Framework Core,在我的模型中,通过表ArticleTag在多对多关系中有实体Article和Tag。 我想选择“趋势标签”-标签与大多数文章在过去的X天,我想要这个计数 基本上,我需要帮助创建等效于此SQL查询的EF Linq查询,理想结果是Dictionary 这可以在DbContext中不使用ArticleTag作为DbSet的情况下完成(因为它不是一个实体,除了这个查询之外,我不需要它)。您必须为这个查询使用导航属性,并且不需要知道任何关于ArticleTag表的信息 var查询= 来自ctx.Artic
ArticleTag
在多对多关系中有实体Article
和Tag
。
我想选择“趋势标签”-标签与大多数文章在过去的X天,我想要这个计数
基本上,我需要帮助创建等效于此SQL查询的EF Linq查询,理想结果是Dictionary
这可以在DbContext中不使用
ArticleTag
作为DbSet
的情况下完成(因为它不是一个实体,除了这个查询之外,我不需要它)。您必须为这个查询使用导航属性,并且不需要知道任何关于ArticleTag
表的信息
var查询=
来自ctx.Articles中的a
来自a.标签中的t
其中a.DateCreated>someDate
按新的{t.Id,t.Name}将t分组到g中
orderby g.Count()降序
选择新的
{
g、 密钥Id,
g、 键。名称,
Count=g.Count()
};
var结果=查询
.Take(50)
.ToDictionary(x=>newtag{Id=x.Id,Name=x.Name},x=>x.Count);
您必须为此查询使用导航属性,并且不需要了解有关ArticleTag
表的任何信息
var查询=
来自ctx.Articles中的a
来自a.标签中的t
其中a.DateCreated>someDate
按新的{t.Id,t.Name}将t分组到g中
orderby g.Count()降序
选择新的
{
g、 密钥Id,
g、 键。名称,
Count=g.Count()
};
var结果=查询
.Take(50)
.ToDictionary(x=>newtag{Id=x.Id,Name=x.Name},x=>x.Count);
5之前的所有EF Core版本都需要多对多表的实体。您使用的是哪个版本?在5之前的所有EF核心版本中都添加了多对多,多对多表需要一个实体。您使用的是哪个版本?添加多对多允许多对多关系而不映射ArticleTag
允许多对多关系而不映射ArticleTag
SELECT TOP 50
t.Id, t.Name, count(*)
FROM ArticleTag at
JOIN Article a ON a.Id = at.ArticleId
JOIN Tag t ON t.Id = at.TagId
WHERE a.DateCreated > '2019-10-01'
GROUP BY t.Id, t.Name
ORDER BY count(*) DESC