2017-02-09 44 views
0

我正在尋找一些幫助,以便能夠從SQL查詢成績單一些LINQ:SQL到LINQ的多對多關係(C#ASP.net MVC)

這裏是我的數據庫中快速瀏覽一下: database schema

實體框架「簡化」我「etudiant」模式是這樣的:

[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; } 

我能找到「libellé」我的「賽道」,其中「etudiant_id」 == 1像這樣的SQL:

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 
     )) 

但我不覺得如何使LINQ查詢(我使用LinqPad 4爲我的測試)

感謝您提前幫助

回答

0

爲什麼不直接調用集合上的實體?如果它被映射,則過濾自動發生。無需創建另一個查詢。

var courses = myEtudiantInstance.cours; 

如果你想libelle然後

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

這要求延遲加載啓用或使用Include當你在收集Etudiant實例。

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

我沒有得到你是怎麼做到的一切,但你解決我的問題! 謝謝,我會繼續學習這種語言:) – bap

0

編輯:萬一這可能是有用的人:

所以,很簡單使用DAL文件夾(數據訪問層)作爲秀上following教程(小標題下的「創建數據庫上下文「)。

如果你不明白這個文件夾的用途是什麼,我建議你this鏈接。

如果我做我的MVC更好,並按照本教程中,我不會有麻煩我的LINQ查詢