Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 实体框架获取前10行_Asp.net Mvc_Entity Framework_Linq To Sql_Linq To Entities - Fatal编程技术网

Asp.net mvc 实体框架获取前10行

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

我在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       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。