Why are you bringing all that data back to the client in the first place?
I would write that as a stored procedure and do it ALL on the server... The only thing you need to return from that is maybe an error code and diagnostic text if something goes wrong.
Paul's tried and true rule of thumb: If the user doesn't need to see and interact with the data, don't waste their time retrieving it.
-Paul-