SPSiteDataQuery.Lists Property
Gets or sets the inner XML that specifies which lists to include in the query.
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Available in Sandboxed Solutions: Yes
Available in SharePoint Online
Syntax
'Declaration
Public Property Lists As String
Get
Set
'Usage
Dim instance As SPSiteDataQuery
Dim value As String
value = instance.Lists
instance.Lists = value
public string Lists { get; set; }
Property Value
Type: System.String
An XML string that contains either an integer ID that specifies the list type, or GUIDs that specify the IDs of lists.
Remarks
The top-level element in the string must be Lists.
Lists Attributes
Supported optional attributes for the Lists tag include the following:
ServerTemplate -- Limits the query to lists of the specified server template. By default, this attribute is not set and so the query is not limited to lists based on a particular template.
Example: <Lists ServerTemplate="104" />
BaseType -- Limits the query to lists of the specified base type. By default, the query considers lists of BaseType 0 (generic lists).
Example: <Lists BaseType="1" />
The following table lists possible values for the attribute.
Value
Description
0
Generic list
1
Document library
3
Discussion forum
4
Vote or Survey
5
Issues list
Hidden -- Determines whether the query includes hidden lists. By default, the query considers all non-hidden lists.
Example: <Lists Hidden = "TRUE />
MaxListLimit -- Limits the query to the total number of lists specified. If the query would exceed the limit, the query instead fails and raises an SPException. By default, the limit is 1000. When set to 0, there is no limit to the number of lists that are considered.
Example: <Lists MaxListLimit="500" />
Lists Subelements
Possible subelements of the Lists tag include List and WithIndex.
The List tag allows the query to include specific lists, instead of returning all lists of a particular type. The ID attribute identifies each list. Example:
<Lists> <List ID="7A9FDBE6-0841-430a-8D9A-53355801B5D5" /> <List ID="3D18F506-FCA1-451e-B645-2D720DC84FD8" /> </Lists>
The WithIndex tag is an optional child of Lists and, when present, the query is limited to lists with indexed fields.
Warning
Queries that use WithIndex will result in slow performance for a site collection with a large number of items. WithIndex is provided only for backwards compatibility, and its usage is not recommended.
The WithIndex element has three required attributes: FieldId, Value, and Type. The Type attribute must be set to Text. In the following example, the query considers only lists that contain items whose specified field is indexed and set to the text value “Complete”.
<Lists> <WithIndex FieldId="D4819257-6B69-41F1-82C8-A91615BFF500" Type="Text" Value="Complete" /> </Lists>
Examples
The following example is a console application that retrieves data from all lists that are based on the Contacts list template.
Imports System
Imports System.Data
Imports Microsoft.SharePoint
Module ConsoleApp
Sub Main()
Using site As SPSite = New SPSite("https://localhost")
Using web As SPWeb = site.OpenWeb()
Dim query As SPSiteDataQuery = New SPSiteDataQuery()
' Query all Web sites in this site collection.
query.Webs = "<Webs Scope='SiteCollection'>"
' Ask for all lists created from the contacts template.
query.Lists = "<Lists ServerTemplate='105' />"
' Get the Title (Last Name) and FirstName fields.
query.ViewFields = "<FieldRef Name='Title' />"
query.ViewFields += "<FieldRef Name='FirstName' Nullable='TRUE'/>"
Dim results As DataTable = web.GetSiteData(query)
For Each row As DataRow In results.Rows
Console.WriteLine("{0} {1}", row("FirstName"), row("Title"))
Next
End Using
End Using
Console.ReadLine()
End Sub
End Module
using System;
using System.Data;
using Microsoft.SharePoint;
namespace Test
{
class ConsoleApp
{
static void Main(string[] args)
{
using (SPSite site = new SPSite("https://localhost"))
{
using (SPWeb web = site.OpenWeb())
{
SPSiteDataQuery query = new SPSiteDataQuery();
// Query all Web sites in this site collection.
query.Webs = "<Webs Scope=\"SiteCollection\">";
//Ask for all lists created from the contacts template.
query.Lists = "<Lists ServerTemplate=\"105\" />";
// Get the Title (Last Name) and FirstName fields.
query.ViewFields = "<FieldRef Name=\"Title\" />";
query.ViewFields += "<FieldRef Name=\"FirstName\" Nullable=\"TRUE\"/>";
DataTable results = web.GetSiteData(query);
foreach (DataRow row in results.Rows)
Console.WriteLine("{0} {1}", row["FirstName"], row["Title"]);
}
}
Console.ReadLine();
}
}
}