2017-02-09 2 views
0

Ich bin für etwas Hilfe suchen Lage sein, einige LINQ aus einer SQL-Abfrage Transkript:SQL Linq für viele zu viele Beziehungen (C# ASP.net MVC)

Hier ist ein kurzer Blick meiner Datenbank: database schema

Entity Framework "vereinfachen" my "etudiant" Modell wie folgt aus:

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] 
public virtual ICollection<etuResult> etuResult { get; set; } 

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] 
public virtual ICollection<cours> cours { get; set; } 

ich bin in der Lage die "Libelle" meiner "cours" zu finden, wo die "etudiant_id" == 1 in SQL wie folgt:

select c.libelle 
from cours c 
where c.cours_id in (
    select ec.cours_id 
    from etuCours ec 
    where ec.etudiant_id in (
     select e.etudiant_id 
     from etudiant e 
     )) 

aber ich nicht finden, wie die Abfrage mit Linq zu machen (ich benutze LinqPad 4 für meinen Test)

Dank im Voraus für Sie helfen

Antwort

0

Warum die Sammlung nicht rufen direkt an dem Unternehmen? Wenn es zugeordnet ist, erfolgt die Filterung automatisch. Keine Notwendigkeit, eine weitere Abfrage zu erstellen.

var courses = myEtudiantInstance.cours; 

Wenn Sie die libelle wollen, dann

var libelles = myEtudiantInstance.cours.Select(c => c.libelle); 

Dies erfordert entweder verzögertes Laden aktiviert sein ODER Include verwenden, wenn Sie die Etudiant Instanz auf der Sammlung zu bekommen.

var libelles = dbContextInstance.Etudiants 
    .Include(e => e.cours) 
    .Single(e => e.EtudiantId == 1) // will throw exception if entity not found 
    .cours.Select(c => c.libelle); // get all libelle's 
+0

ich nicht alles bekommen, nicht, wie du es getan hast, aber du mein Problem gelöst! Danke, ich werde weiterhin über diese Sprache lernen :) – bap

0

Edit: im Fall kann dies zu jemandem nützlich sein:

Es ist einfacher, einen DAL-Ordner zu verwenden (Data Access Layer) als Erscheinen auf dem following Tutorial (unter dem Untertitel „Erstellen Sie den Datenbank-Kontext ").

Wenn Sie nicht verstehen, was der Zweck auf diesem Ordner ist, schlage ich Ihnen this Link.

Wenn ich meine MVC besser gemacht und dieses Tutorial folgen, würde ich in Schwierigkeiten für meine Linq Abfragen