2012-06-04 2 views

Répondre

1

Si l'on suppose ce que vous voulez faire est d'obtenir une liste de ClassA ayant au moins un ClassB avec Property == 1:

var result = session.Query<ClassA>() 
        .Where(a => a.ListB.Any(b => b.Property == 1)) 
        .ToList(); 

Ce ne serait pas une jointure externe, bien que. Vous pouvez l'émuler en ajoutant || !a.ListB.Any().

+0

Le SQL généré est bizarre et j'ai une erreur de cast sur C# (Mais le sql a fonctionné sur SQL Manager) ... Si c'est le seul moyen, je pense que QueryOver est la meilleure option, non? – Paul

+0

Je n'ai pas votre source, donc je ne peux pas savoir quelle est votre erreur de distribution. A propos du sql étant bizarre ... euh? Ce n'est pas comme si vous deviez le maintenir manuellement. Enfin, QueryOver peut être meilleur ou pas, je n'ai toujours pas assez d'informations sur ce dont vous avez besoin. –

+0

Mon exemple ici est très simple ... Mais je peux avoir un scénario complexe comme celui-ci: Objet A -> Liste B -> Objet C -> Liste D -> Objet E -> Propriété E ... Donc je dois créer une requête pour renvoyer la classe A basée dans la propriété E ... – Paul

Questions connexes