CAML Query найти записи, где параметр не существует?
У меня есть список sharepoint, в котором есть несколько полей. Кажется, что когда поле остается пустым в одной из записей - этот атрибут отсутствует в поле, когда я запрашиваю список, используя запрос CAML.
Можно ли написать запрос для возврата записей, которые не содержат этого атрибута?
Пример:
id Employee Title description
-------------------------
1 Jeff Person1
2 Bob Person2
3 Charles Person3
4 Person4
5 Person5
Есть ли способ запросить это, чтобы вернуть только записи с идентификаторами 4 и 5, потому что они оставили поле имени пустым?
Я попробовал следующее:
System.Text.StringBuilder xmlQuery = new StringBuilder();
xmlQuery.Append("<Query>");
xmlQuery.Append(" <Where>");
xmlQuery.Append(" <IsNull>");
xmlQuery.Append(" <FieldRef Name=\"Employee Title\" />");
xmlQuery.Append(" </IsNull>"); xmlQuery.Append(" </Where>");
xmlQuery.Append("</Query>"); XmlNode query = new XmlDocument();
query.InnerXml = xmlQuery.ToString();
Но, конечно, атрибут не существует в этих записях, поэтому ничего не возвращается
Заранее спасибо!
редактировать
Запрос работает после замены любых пробелов в Name
с x0020
xmlQuery.Append(" <FieldRef Name=\"Employee_x0020_Title\" />");
2 ответа
Не должно быть никаких проблем, если в значении поля отсутствует одно или несколько полей, это просто нормально и должно работать. Но одно изменение, которое вам нужно будет сделать в запросе, - это удалить внешний тег запроса, используйте приведенный ниже запрос, и вам будет хорошо.
<Where>
<IsNull>
<FieldRef Name="Name" />
</IsNull>
</Where>
Это длинный список, но действительно ли ваш столбец "Имя" в списке называется "Заголовок"?
FieldRefs ожидают внутреннего имени поля AFAIK