Caml查询不返回值

时间:2016-03-17 12:21:11

标签: c# sharepoint caml


我有sharepoint 2013列表“员工”,其中包含员工的联系信息的文件夹。有一个字段有助于识别每个员工:员工GUID。该字段的类型为 “文本” 和格式(例如):a3c73e48-d38e-4c83-8ed4-df70d3037cc2。

我想使用查询来查找我想要的guid员工。我使用下面的代码:

string guid = "a3c73e48-d38e-4c83-8ed4-df70d3037cc2";
string sQuery = @"<Where><Eq><FieldRef Name=""Title""></FieldRef><Value Type=""Text"">"+guid+"</Value></Eq></Where>";
                    var oQuery = new SPQuery();
                    oQuery.Query = sQuery;
                    oQuery.Folder = folder;

                    SPListItemCollection collListItems = list.GetItems(oQuery);

在collListItems.Count中我收到了0!

但是在camlQueryBuilder中,我收到了员工。如果我使用文本字段:姓氏+第二个名称来标识项目,我收到带有这样的姓氏+第二名称的项目的集合,并在那里我找到了我想要的guid员工。

我做错了什么?请解释一下!

1 个答案:

答案 0 :(得分:0)

您的CAML查询指定您要搜索Title字段(其中显示FieldRef Name="Title"),但您要查找的GUID不在该字段中。我使用的列表项有两个GUID字段,一个名为GUID,另一个名为UniqueId。这两个字段具有不同的值,因此您可能需要同时尝试查看哪个包含您想要的值。

对于GUID字段,您的查询应如下所示:

string sQuery = @"<Where><Eq><FieldRef Name=""GUID""></FieldRef><Value Type=""Text"">"+guid+"</Value></Eq></Where>";

对于UniqueId字段,您的查询应如下所示:

string sQuery = @"<Where><Eq><FieldRef Name=""UniqueId""></FieldRef><Value Type=""Text"">"+guid+"</Value></Eq></Where>";