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

Comment puis-je écrire cela en utilisant LINQ?Comment transcrire SQL en LINQ

Merci.

Répondre

0

Si vous créez le DataContext à l'aide du concepteur et avez des clés étrangères définies de manière appropriée, celles-ci doivent apparaître en tant que propriétés dans vos classes d'entité, Entity ou EntitySet, selon qu'elles sont 1-1 ou 1-plusieurs. Vous pouvez également définir les relations dans le concepteur si aucune clé étrangère n'est affectée.

Sinon, vous pouvez faire quelque chose comme:

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

Notez que cela sélectionnera sur un type anonyme. Je trouve que généralement lors d'une jointure, je finis par sélectionner un sous-ensemble de propriétés dans un type anonyme (ou parfois nommé), et non les entités réelles qui composent la jointure. C'est pourquoi je l'ai montré de cette façon. Vous pouvez, bien sûr, conserver les objets entiers et ajuster le select/groupby en conséquence.