Hi Darren,
This is an approximate code that shows how to use aliases in your code:
IPredicateExpression filter = new PredicateExpression();
bucket.Relations.Add(ProductTypeOptionAttributeEntity.Relations.ProductTypeOptionAttributeCombinationProfileEntityUsingProductTypeOptionAttributeId,
"PTOA", "PTOACP", JoinHint.Inner);
bucket.Relations.Add(ProductTypeOptionAttributeCombinationProfileEntity.Relations.ProductTypeOptionAttributeCombinationEntityUsingProductTypeOptionAttributeCombinationId,
"PTOACP", "PTOAC", JoinHint.Inner);
bucket.Relations.Add(ProductTypeOptionAttributeCombinationEntity.Relations.ProductTypeOptionAttributeCombinationProfileEntityUsingCombinationID,
"PTOAC", "PTOACP2", JoinHint.Inner);
bucket.Relations.Add(ProductTypeOptionAttributeCombinationProfileEntity.Relations.ProductTypeOptionAttributeEntityUsingProductTypeOptionAttributeId,
"PTOACP2", "PTOA2", JoinHint.Inner);
filter.Add(ProductTypeOptionAttributeFields.OptionId.SetObjecAlias("PTOA") == dl.Key);
filter.AddWithAnd(ProductTypeOptionAttributeCombinationFields.ProductTypeId.SetObjectAlias("PTOAC") == DataSource.DataItem.ProductTypeId);
filter.AddWithAnd(ProductTypeOptionAttributeCombinationFields.ProductId.SetObjectAlias("PTOAC") == DataSource.ProductID);
bucket.PredicateExpression.Add(filter);
....
ProductTypeOptionAttributeCollection attrs = new ProductTypeOptionAttributeCollection();
attrs.GetMulti(bucket.PredicateExpression, -1, null, bucket.Relations);
BTW, I saw this snippet that is part of you predicate expression. But I fail to see what are you doing there. You are adding predicate expressions on the same field multiple times and using "AND". This will return 0 results if you have more than one selected value in the dropDownList. Am I wrong?
Anyway this is not part of the original issue. I am just curious.