2010-03-06 31 views
2
select * form autor 
    inner join (carte inner join carte_autor using id_carte) 
    using id_autor 
    group by id_autor; 

如何使用LINQ編寫此代碼?如何將SQL轉錄爲LINQ

謝謝。

回答

0

如果您使用設計器創建DataContext並且具有適當定義的外鍵,則這些屬性應顯示爲您的實體類(實體或EntitySet)的屬性,具體取決於它是1-1還是1-many。如果您沒有分配外鍵,您也可以在設計器中定義關係。

否則,你可以這樣做:

var carteAutors = db.Carte.Join(db.CarteAutor, (o,i) => o.ID_Carte == i.ID_Carte) 
        .Select((o,i) => new { ID_Autor = i.ID_Autor, ...et al... }); 

var q = db.Autors 
      .Join(carteAutors, (o,i) => o.ID_Autor == i.ID_Autor) 
      .Select((o,i) => new { ID_Autor = o.ID_Autor, ...et al...) 
      .GroupBy(a => a.ID_Autor); 

注意,這將挑選出一個匿名類型。我發現通常在進行連接時,我最終會選擇屬性的一個子集成爲匿名(有時是命名的)類型,而不是構成連接的實際實體。這就是我以這種方式展示它的原因。當然,您可以保留全部對象並相應地調整選擇/組。