Since you have to get the tasks from different sub sites in a site collection, you will have to use SPSiteDataQuery. You can use the list template for workflow task and give webs scope as "SiteCollection" as you need tasks from all the sub sites. You can write your caml query condition to filter out tasks.
SPSiteDataQuery query = new SPSiteDataQuery();
// Query all Web sites in this site collection.
query.Webs = "<Webs Scope=\"SiteCollection\">";
//Ask for all lists created from the tasks template.
query.Lists = "<Lists ServerTemplate=\"107\" />";
Here is the list of all list template ids http://mirusp2010.blogspot.in/2013/03/list-template-id.html
If you have created custom list template for class you can specify that ID.The datatable returned by the SPSiteDataQuery will have information regarding the sub site where this task is from , id of the task etc. You can create a custom control with checkboxes to display the tasks and add functionality to approve that task.