2009-03-31 8 views
4

欲しい結果のタイプを返し、次のSQLクエリがあります本質的に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' 

を表2からのデータを有する(b)に列挙されている間、私は表1に等しい行(A)の数が欲しいです表2に条件 'test'が存在しない場合はNULLです。

私はむしろLLBLGenに新しく、いくつか試してみましたが、うまくいきません。条件があれば、私はそれを働かせることができます。しかし、要件の変更が入って上記のクエリを書き直すと、私は迷っています。以下は

は、上記のクエリのための既存の製品ではなくのために働いていた古いLLBLGen C#コードです:

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

表1は、その中に3つのレコードを持っています。条件が存在しないため、表2のすべての項目がNULLであっても、3つのレコードを戻す必要があります。何か案は?あなたが関係にあなたのフィルタを追加しました

答えて

7

は次のように参加:

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

うーん、プリフェッチでこれを行う方法を...? – BozoJoe

+0

PredicateExpressionを定義し、.CustomFilterをこれに設定することもできます。 IPredicateExpression myFilter =新しいPredicateExpression(); myFilter.Add(CompanyFields.Name == "StackExchange"); productRelations.Add(ProductEntity.Relations.CompanyEntityUsingCompanyId、JoinHint.Left).CustomFilter = myFilter; –

関連する問題