2009-11-06 6 views
1

Supposons que j'ai 3 tables: A (aide, ...), B (offre, ...) Relation (aide, offre, ...) Ensuite, j'ai une aide en tant que paramètre, je veux obtenir le résultat de b. Si utiliser SQL, sera commeComment écrire linq pour obtenir des données de différentes tables?

select b.* from B join Relationship on b.bid = Relationship.bid 
where relationship.aid = aid_param 

comment écrire Linq avec le même résultat que ci-dessus SQL. (la clé étrangère n'a pas été créée correctement dans ce cas)?

Répondre

0
var bQuery = from r in MyContext.Relationship 
      where r.aid == aid_param 
      select r.B; 

Si vous ne disposez pas d'un ensemble de relations dans le modèle, alors u peut:

var bQuery = from b in myContext.B 
      where myContext.Relationship 
       .Any(r => r.aid == aid_param && b.bid == r.bid) 
      select b; 
1

En supposant que vous avez utilisé le concepteur d'ajouter vos tables au contexte de données LINQ et vous avoir des relations de clé étrangère définies dans la base de données ou avoir codé manuellement les associations dans le concepteur, vous devriez simplement pouvoir référencer la table B et ses propriétés EntitySet of Relationship, filtrées par votre paramètre, et vérifier s'il y a des correspondances.

var relationships = db.B.Any(b => b.Relationships.Where(r => r.aid == aid_param)); 
+0

@tvanfosson il veut sélectionner B (comme dans ma réponse), pas la relation. – eglasius

+0

Oups. J'ai mis à jour pour sélectionner tout B qui a des relations correspondantes. – tvanfosson

0

var output = de b

de relation où (b.bid = Relationship.bid,
relationship.aid = aid_param)

Questions connexes