My project was an intranet, a sub site monster that needed a query to show all the tasks for the current user. There were two options - recursive code (no thank you) or SPSiteDataQuery . The key to the code is to limit the list query to the appropriate list type (see here for a list from Microsoft). In my case, it was "<Lists ListTemplate='107' />". Then add some simple CAML (thank you Camldesigner ) and you are there. My final query was as follows: SPSiteDataQuery q = new SPSiteDataQuery(); q.Webs = "<Webs Scope='SiteCollection' />"; q.Lists = "<Lists ListTemplate='107' />"; q.Query = "<Where><And><Or><Membership Type='CurrentUserGroups'><FieldRef Name='AssignedTo'/></Membership><Eq><FieldRef Name='AssignedTo'></FieldRef...