Okay -- it wasn't letting me add any relations because the relations collections of the entities was empty, plus if I created a new EntityRelation with field names, the resulting query would always contain "on field1 = field2" in addition to the custom filter, which broke the query.
I think I figured it out, though. I got the latest version of LLBLGen and regenerated. The new version has a CustomFilterReplacesOnClause property which seems to have the desired effect. The code ends up looking like this: (It appears to work fine.)
IRelationCollection relations = new RelationCollection();
relations.Add( new EntityRelation(
EntityFieldFactory.Create( TermFieldIndex.TermId ),
EntityFieldFactory.Create( SectionFieldIndex.SectionId ), RelationType.OneToOne ) );
relations[0].CustomFilterReplacesOnClause = true;
relations[0].CustomFilter = filter; // the filter that contains the inequalitites
DataTable list = new DataTable();
TypedListDAO dao = new TypedListDAO();
dao.GetMultiAsDataTable(fields, list, 0, null, filter, relations, false, null, null, 0, 0);
I believe the actual entity fields and relationship type used when creating the new entity relations are ignored -- they're only used to define which tables to join.
Thanks for your help and speedy reply!
-Alex