2009-03-31 4 views
4

J'ai la requête SQL suivante qui retourne le type de résultats que je veux:Comment joindre des tables avec une condition en utilisant LLBLGen?

SELECT b.ID, a.Name, b.Col2, b.COl3 
FROM Table1 a 
LEFT OUTER JOIN Table2 b on b.Col4 = a.ID AND b.Col5 = 'test' 

Essentiellement, je veux un certain nombre de lignes égal à Tableau 1 (a) tout en ayant les données de Tableau2 (b) la liste ou NULL si la condition 'test' n'existe pas dans Table2. Je suis plutôt nouveau à LLBLGen et ai essayé quelques choses et cela ne fonctionne pas. Je peux le faire fonctionner si la condition existe; Cependant, quand un changement d'exigences est arrivé et m'a amené à réécrire la requête à ce qui précède, je suis à perte.

est Ci-dessous l'ancien LLBLGen code C# qui a travaillé pour les produits existants, mais pas pour la requête ci-dessus:

LookupTable2Collection table2col = new LookupTable2Collection(); 

RelationCollection relationships = new RelationCollection(); 
relationships.Add(LookupTable2Entity.Relations.LookupTable1EntityUsingTable1ID, JoinHint.Left); 

IPredicateExpression filter = new PredicateExpression(); 
filter.Add(new FieldCompareValuePredicate(LookupTable2Fields.Col5, ComparisonOperator.Equal, "test")); 

table2col.GetMulti(filter, relationships); 

Tableau 1 a 3 enregistrements en elle. J'ai besoin des enregistrements 3 même si tous les éléments du tableau 2 sont NULL car la condition n'existe pas. Des idées?

Répondre

7

Vous avez ajouter un filtre à votre relation se joindre comme ceci:

relationships.Add(LookupTable2Entity.Relations.LookupTable1EntityUsingTable1ID, JoinHint.Left).CustomFilter = new FieldCompareValuePredicate(LookupTable2Fields.Col5, ComparisonOperator.Equal, "test"); 
+0

hmm, comment faire cela dans un prefetch ...? – BozoJoe

+0

Vous pouvez également définir un PredicateExpression et définir le .CustomFilter à cela. IPredicateExpression myFilter = new PredicateExpression(); myFilter.Add (CompanyFields.Name == "StackExchange"); productRelations.Add (ProductEntity.Relations.CompanyEntityUsingCompanyId, JoinHint.Left) .CustomFilter = monFiltre; –

Questions connexes