You can sort the data read from the database based on a field (or fields) in related entities, however not when the data is already in memory.
To sort the products fetched from the database based on the color name, you have to specify a relationcollection with the relation and a sortclause on color.name:
IRelationCollection relations = new RelationCollection();
relations.Add(ProductEntity.Relations.ColorEntityUsingColorId);
ISortExpression sorter = new SortExpression(SortClauseFactory.Create(ColorFieldIndex.Name, SortOperator.Ascending));
ProductCollection products = new ProductCollection();
products.GetMulti(null, 0, sorter, relations);
This will fetch all products, sorted on color.name.