It should work, you must be doing something wrong. Here's an example using a filter and a sort.
FilteredPODetailTypedList list = new FilteredPODetailTypedList();
DataAccessAdapter adapter = new DataAccessAdapter();
IRelationPredicateBucket bucket = (IRelationPredicateBucket)list.GetRelationInfo();
bucket.PredicateExpression.Add(PredicateFactory.CompareValue(PODetailFieldIndex.PONumber, ComparisonOperator.Equal, PONumber));
ISortExpression sort = new SortExpression(SortClauseFactory.Create(PODetailFieldIndex.POLineNumber, SortOperator.Ascending));
adapter.FetchTypedList(list.GetFieldsInfo(), list, bucket, 0, sort, false);