Asp.net mvc 实体框架获取前10行
我在SQL数据库中有3个表 tblVideos:Asp.net mvc 实体框架获取前10行,asp.net-mvc,entity-framework,linq-to-sql,linq-to-entities,Asp.net Mvc,Entity Framework,Linq To Sql,Linq To Entities,我在SQL数据库中有3个表 tblVideos: VideoID int PK Title varchar(100) Decription varchar(100) TagID int PK TagText varchar(100) VideoID int PK, FK to Videos TagID int PK, FK to Tags tblTags: VideoID int PK Title varch
VideoID int PK
Title varchar(100)
Decription varchar(100)
TagID int PK
TagText varchar(100)
VideoID int PK, FK to Videos
TagID int PK, FK to Tags
tblTags:
VideoID int PK
Title varchar(100)
Decription varchar(100)
TagID int PK
TagText varchar(100)
VideoID int PK, FK to Videos
TagID int PK, FK to Tags
tblVideosToTags:
VideoID int PK
Title varchar(100)
Decription varchar(100)
TagID int PK
TagText varchar(100)
VideoID int PK, FK to Videos
TagID int PK, FK to Tags
在实体框架(v6最新夜间构建)中,我有两个类Video
和Tag
,它们具有多对多关系。我需要有关构建LINQ to实体或LINQ to SQL查询的帮助,该查询满足以下条件:
标签中最常用的前10条记录。所以可能需要一些求和/计数/分组如果你想找到标签数量最多的前10个视频,你可能会发现这很容易,但事实上你现在想要做的是完全一样的。你只需要拥有最多视频的前10个标签。使用以下命令:
var mostUsedTags = db.Tags.OrderByDescending(t => t.Videos.Count).Take(10);
到目前为止,您创建的查询是什么?事实上,我一开始就被困住了:db.Tags.Include(x=>x.Videos).OrderBy(…这里我需要一些想法AsLinq to SQL是一个不同的、简单的ORM-所以您要么使用实体框架(然后您将编写Linq to Entities查询),或者您正在使用Linq to SQL-但这是两个完全独立、不同的代码。再一次提出问题。如果我想将lang列添加到Videos表中,并希望执行相同的操作,但使用按语言筛选(从具有指定语言的视频中获取前10个最常用的标记)。类似于:var mostUsedTags=db.tags.OrderByDescending(t=>t.Videos.Where(l=>l.Lang==Lang.Count).Take(10);但此构造不起作用使用此:
db.Tags.OrderByDescending(t=>t.Videos.Count(v=>v.Lang==Lang)).Take(10)
Hi ataravati,再次需要您的帮助。尝试为最后3个上载的视频获取标记时运气不佳…假设VideoID是自动生成的ID,最后一个上载的视频是具有最大VideoID的视频。因此,您需要做的是:var tags=db.videos.OrderByDescending(v=>v.VideoID)。Take(3)。选择(v=>v.tags).SelectMany(t=>t).Distinct();
您需要使用Distinct()来消除重复的标记。并且,您可以使用SelectMany将IEnumerable展平为t。