C# SharePoint:按唯一ID获取SPListItem

C# SharePoint:按唯一ID获取SPListItem,c#,sharepoint,C#,Sharepoint,我试图从唯一ID(GUID)获取SPListItem对象。通过查看几个站点(包括和),我得出了下面的代码 const string QueryFormat = @"<Where> <Eq> <FieldRef Name='UniqueId' /> <Value Type='Lookup'>{0}</Value> </Eq> </Where>";

我试图从唯一ID(GUID)获取SPListItem对象。通过查看几个站点(包括和),我得出了下面的代码

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);
常量字符串查询格式=
@"
{0}
";
SPSiteDataQuery query=新的SPSiteDataQuery();
query.Webs=“”;
query.Lists=“”;
query.query=string.Format(QueryFormat,itemUniqueId);
query.RowLimit=1;
//query.ViewFields=“”;
var results=SPContext.Current.Web.GetSiteData(查询);
然而,不管怎样。。。我似乎总是得到零行返回。我不明白为什么,因为我知道我使用的guid是正确的


有什么想法吗?

请尝试删除QueryFormat字符串中的所有空格。改用类似的方式:

"<Where><Eq><FieldRef Name=\"UniqueId\" /><Value Type=\"Lookup\">{0}</Value></Eq></Where>"
“{0}”
SharePoint不喜欢这些空间

我还建议使用其中一个库生成Caml查询,如: 或

唯一Id的类型无效,应为Guid。 更新您的查询:

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

{0}

您是否考虑过向查询中添加递归类型?您还可以向我们展示如何以及以何种形式传递GUID吗?您是否只关心列表项,而不关心列表、网站或网站?您知道该项目的目标列表或网站吗?您是否被限制使用CAML?您知道
$listItem=$spList.GetItemByUniqueId($targetGuid)
方法吗?正如你所看到的,在任何人都能提供有意义的答案之前,有许多问题需要回答。这是不正确的。UniqueId的字段类型和类型字符串实际上是查找。