我有以下Sql查询返回我想要的结果类型:
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中没有条件'test',那么我希望列出等于Table1(a)的行,同时列出表2(b)中的数据或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条记录,因为条件不存在.有任何想法吗?
您要将过滤器添加到关系连接中,如下所示:
relationships.Add(LookupTable2Entity.Relations.LookupTable1EntityUsingTable1ID, JoinHint.Left).CustomFilter = new FieldCompareValuePredicate(LookupTable2Fields.Col5, ComparisonOperator.Equal, "test");