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

Другие вопросы по тегам