Entity Framework Holen Top-10 Zeilen
Ich habe eine 3 Tabellen in SQL-Datenbank
tblVideos:
VideoID int PK
Title varchar(100)
Decription varchar(100)
tblTags:
TagID int PK
TagText varchar(100)
tblVideosToTags:
VideoID int PK, FK to Videos
TagID int PK, FK to Tags
In Entity Framework (v6-latest-nightly-build) habe ich 2 Klassen Video
und Tag
mit viele-zu-viele-Beziehungen. Ich brauche eine Hilfe mit dem Aufbau einer LINQ to Entities LINQ to SQL-Abfrage, die erfüllt folgende Bedingungen:
Top-10 Datensätze von Tags, die meist verwendet. So werden wohl einige summieren/zählen/gruppieren benötigt
Was ist die Abfrage, die Sie bisher entwickelt haben?
eigentlich bin ich stucked am Anfang: db.Tags.Enthalten(x => x.Videos).OrderBy(... hier muss ich einige Ideen
Linq-to-SQL ist eine verschiedene, vereinfachend ORM - so sind Sie entweder mit Entity Framework, (dann Sie werden schriftlich von Linq-to-Entities-Abfragen), ,ODER sind Sie mit Linq-to-SQL - aber das sind zwei völlig getrennte, verschiedene Teile des Codes
eigentlich bin ich stucked am Anfang: db.Tags.Enthalten(x => x.Videos).OrderBy(... hier muss ich einige Ideen
Linq-to-SQL ist eine verschiedene, vereinfachend ORM - so sind Sie entweder mit Entity Framework, (dann Sie werden schriftlich von Linq-to-Entities-Abfragen), ,ODER sind Sie mit Linq-to-SQL - aber das sind zwei völlig getrennte, verschiedene Teile des Codes
InformationsquelleAutor Sergey Sypalo | 2013-07-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollte, zu finden, die top 10 Videos mit den meisten Anzahl von Tags, würden Sie wahrscheinlich finden es einfacher, aber in Wirklichkeit, was Sie jetzt tun, ist genau das gleiche. Sie müssen nur die top-10 Tags mit der Anzahl der Videos. Verwenden Sie diese:
Verwenden Sie diese:
db.Tags.OrderByDescending(t => t.Videos.Count(v => v.Lang == lang)).Take(10);
Hi ataravati, brauche Eure Hilfe wieder einmal. Versuchen, um tags für die letzten 3 hochgeladenen videos nicht mit Glück...
Unter der Annahme, dass VideoID ist eine automatisch generierte ID, die Letzte hochgeladene video wird mit einer maximalen Video. So, hier ist was Sie tun müssen:
var tags = db.Videos.OrderByDescending(v => v.VideoID).Take(3).Select(v => v.Tags).SelectMany(t => t).Distinct();
müssen Sie die Verwendung von Distinct (), um loszuwerden, doppelte tags.Und verwenden Sie SelectMany zu glätten IEnumerable<T> in T.
InformationsquelleAutor ataravati