Here is an example:
select * from Orders
Where ShipVia = 3
and not exists(select O.OrderID from Orders O where O.ShipVia = 1 and CustomerID = O.CustomerID)
var orders = new EntityCollection<OrderEntity>();
var innerFilter = new PredicateExpression(OrderFields.ShipVia.SetObjectAlias("O") == 1);
innerFilter.Add(OrderFields.CustomerId == OrderFields.CustomerId.SetObjectAlias("O"));
var filterBucket = new RelationPredicateBucket(OrderFields.ShipVia == 3);
filterBucket.PredicateExpression.Add(
new PredicateExpression(
new FieldCompareSetPredicate(
null,
null,
OrderFields.OrderId.SetObjectAlias("O"),
null,
SetOperator.Exist,
innerFilter,
true)));
using (var adapter = new DataAccessAdapter())
{
adapter.FetchEntityCollection(orders, filterBucket);
}