When we need to retrieve result sets from multiple database tables via join operation a common practice is to use Generic DataSet to store the result. We can consider Custom Business Entity for the cases where the joining operation can be determined at the software design time, which provides faster execution time than DataSet.
Also in some cases joining operation is required to be implemented in application end, rather database end query, especially when multiple entities are required to be combined from database and/or web service source.