Запрос 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, который я хочу.

Что я делаю не так? Объясни мне пожалуйста!


person Ivan Tikhonov    schedule 17.03.2016    source источник


Ответы (1)


В вашем запросе 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>";
person Jack A.    schedule 17.03.2016