SPSiteDataQuery and SPQuery

SPSiteDataQuery 格式,其实下面的是很不规范的,只是让自己了解其真正的格式。以后会弄一个类来做这方面的工作
<MatchingQuery> 

<Lists><List ID="2DF16909-AEE4-44F0-BBF5-B6E5F33F7AD6" /></Lists> 

<Webs Scope="SiteCollection" /> 

<Query> 

<OrderBy><FieldRef Name='ID'/></OrderBy> 

<Where> 

<And><And><And> 

<IsNotNull><FieldRef Name="_x0030_03aab56_x002d_bb26_x002d_4815_x002d_83d2_x002d_335e857a36f8" /></IsNotNull> 

<Eq><FieldRef Name="_x007b_634f940a_x002d_e3d8_x002d_47d3_x002d_998f_x002d_1f6cf85d6954_x007d_" /><Value Type="DateTime"><Today OffsetDays="1" /></Value></Eq> 

</And> 

<Or><Or> 

<Eq><FieldRef Name="_x007b_b65db77a_x002d_0c3d_x002d_45fb_x002d_8a79_x002d_ab4ff9bca304_x007d_" /><Value Type="Text">Hire</Value></Eq> 

<Eq><FieldRef Name="_x007b_b65db77a_x002d_0c3d_x002d_45fb_x002d_8a79_x002d_ab4ff9bca304_x007d_" /><Value Type="Text">Rehire</Value></Eq> 

</Or> 

<Eq><FieldRef Name="_x007b_b65db77a_x002d_0c3d_x002d_45fb_x002d_8a79_x002d_ab4ff9bca304_x007d_" /><Value Type="Text">Transfer</Value></Eq> 

</Or> 

</And> 

<Or> 

<Eq><FieldRef Name="_x007b_136c33c4_x002d_c3fa_x002d_457b_x002d_8640_x002d_06c403f596f2_x007d_" /><Value Type="Text">Notified</Value></Eq> 

<Eq><FieldRef Name="_x007b_136c33c4_x002d_c3fa_x002d_457b_x002d_8640_x002d_06c403f596f2_x007d_" /><Value Type="Text">Processed</Value></Eq> 

</Or></And> 

</Where></Query> 

<ViewFields><FieldRef Name="Company"/><FieldRef Name="Location"/><FieldRef Name="_x007b_b65db77a_x002d_0c3d_x002d_45fb_x002d_8a79_x002d_ab4ff9bca304_x007d_"/><FieldRef Name="FileRef"/><FieldRef Name="EncodedAbsUrl"/></ViewFields> 

</MatchingQuery>


操作:

public SPSiteDataQuery MatchingQuery

        {

            get

            {

                SPSiteDataQuery oQuery = null;

                try

                {

                    XmlNode xQuery = dJob.MatchingQuery;

                    oQuery = new SPSiteDataQuery();

                    //Changed to solve feature not installed issue.

                    //oQuery.Lists = "<Lists BaseType='1'/>";

                    oQuery.Lists = xQuery.SelectSingleNode("Lists").OuterXml;

                    oQuery.Webs = xQuery.SelectSingleNode("Webs").OuterXml;

                    oQuery.Query = xQuery.SelectSingleNode("Query").InnerXml;

                    oQuery.ViewFields = xQuery.SelectSingleNode("ViewFields").InnerXml;

                }

                catch (Exception ex)

                {

                    Log.JobErrorWrite(Name, "Job: MatchingQuery", ex.ToString());

                }

                return oQuery;

            }

        }



Applicator:



 private DataTable GetMatchItems(SPWeb Web)

        {

            DataTable DT = null;

            try

            {

                SPSiteDataQuery oQuery = JobInfo.MatchingQuery;

                DT = Web.GetSiteData(oQuery);

            }

            catch(Exception ex)

            {

                Log.JobErrorWrite(Title, "Reminder: GetMatchItems", ex.ToString());

            }

            return DT;

        }

 SPQuery:

SPQuery:
public SPListItemCollection GetItems(SPList List, string QueryString)
{
SPQuery Query = null;
SPListItemCollection ItemCollection = null;
try
{
Query = new SPQuery();
Query.Query = QueryString;
ItemCollection = List.GetItems(Query);
}
catch (Exception ex)
{
Log.JobErrorWrite(_JobName, "ListOperator: GetItems", ex.ToString());
}

return ItemCollection;
}

Operator:
string query = "<Where><Eq><FieldRef Name=\"JobStatus\" /><Value Type=\"Choice\">Activating</Value></Eq></Where>";
ListOperator oListOperator = new ListOperator(string.Empty);
SPListItemCollection ItemCollection = oListOperator.GetItems(list, query);

OR

SPQuery query = new SPQuery();
query.Query = string.Concat(
"<Where><Eq>",
"<FieldRef Name='Status'/>",
"<Value Type='CHOICE'>Not Started</Value>",
"</Eq></Where>",
"<OrderBy>",
"<FieldRef Name='DueDate' Ascending='TRUE' />",
"<FieldRef Name=’Priority’ Ascending='TRUE' />",
"</OrderBy>");

query.ViewFields = string.Concat(
"<FieldRef Name='AssignedTo' />",
"<FieldRef Name='LinkTitle' />",
"<FieldRef Name='DueDate' />",
"<FieldRef Name='Priority' />");

// Get data from a list.
string listUrl = web.ServerRelativeUrl + "/lists/tasks";
SPList list = web.GetList(listUrl);
SPListItemCollection items = list.GetItems(query);

 

你可能感兴趣的:(query)