我正在尝试从唯一ID(GUID)获取SPListItem对象。通过查看几个站点(包括http://sharepoint400.blogspot.com/2011/04/using-spsitedataquery-to-find-list.htmlhttp://www.chakkaradeep.com/post/Retrieving-an-Item-from-the-RootWeb-and-Subwebs-using-its-UniqueId.aspx),我想到了下面的代码。

const string QueryFormat =
@"<Where>
    <Eq>
        <FieldRef Name='UniqueId' />
        <Value Type='Lookup'>{0}</Value>
    </Eq>
</Where>";

            SPSiteDataQuery query = new SPSiteDataQuery();
            query.Webs = "<Webs Scope='SiteCollection' />";
            query.Lists = "<Lists BaseType='0'/>";
            query.Query = string.Format(QueryFormat, itemUniqueId);
            query.RowLimit = 1;
            //query.ViewFields = "<FieldRef Name='WebID' /><FieldRef Name='ListID' /><FieldRef Name='ID' />";

            var results = SPContext.Current.Web.GetSiteData(query);


但是,无论如何...我似乎总是返回零行。我不明白为什么,因为我知道我使用的Guid是正确的。

有任何想法吗?

最佳答案

唯一ID的类型无效,应进行引导。
更新您的查询:

<Where>
    <Eq>
        <FieldRef Name='UniqueId'/>
        <Value Type='Guid'>{0}</Value>
    </Eq>
</Where>

10-01 09:12