Scott,You can use a Get method rather than a Fill method. There are two methods that we use. The first is a Fill. A Fill updates the contents of a business object. The other is a Get, which just returns a DataTable, or like you were asking, a temp table.
There are two instrisic methods to a business object, GetDataTable and FillDataTable. The Get method will just return a DataTable, the Fill will updates the contents of the business object. However, each of these has two overloads which allows you to pass a string command (raw SELECT statement) or an SqlCommand.
I hope this helps.