Вы можете использовать SPSiteDataQuery для запроса всех списков по всем сетям коллекции.Вы можете запросить список определенного типа, передав значение ServerTemplate свойству SPSiteDataQuery.Lists .Идентификатор ServerTemplate для задач - 107. Запрос всех веб-сайтов выполняется путем передачи значения «SiteCollection» в свойство SPSiteDataQuery.Webs .
SPSiteDataQuery возвращает таблицу данных с очень ограниченной информацией (я думаю, что это только список и идентификаторы элементов), поэтому вам нужно указать все дополнительные поля в свойстве SPSiteDataQuery.ViewFields .
Следующий код (адаптированный из образца документации класса) вернет все выполняющиеся задачи, упорядоченные по дате их убывания:
SPWeb web = SPContext.Current.Web;
SPSiteDataQuery query = new SPSiteDataQuery();
//Ask for all lists created from the tasks template.
query.Lists = "<Lists ServerTemplate=\"107\" />";
// Get the Title field.
query.ViewFields = "<FieldRef Name=\"Title\" />" ;
// Set the criteria and sort order.
query.Query = "<Where>" +
"<Eq>" +
"<FieldRef Name='Status'>" +
"<Value Type='Choice'>In Progress</Value>" +
"</Eq>" +
"</Where>" +
"<OrderBy>" +
"<FieldRef Name=\"StartDate\" Ascending='False'/>" +
"</OrderBy>";
// Query all Web sites in this site collection.
query.Webs = "<Webs Scope=\"SiteCollection\" />";
DataTable dt = web.GetSiteData(query);