У меня была похожая проблема, когда я пытался запросить список и вернуть все элементы, в которых значение «иглы» содержалось в множественном выборе «стог сена»:
<Where>
<Contains><FieldRef Name='Environments' /><Value Type='Lookup'>DV</Value></Contains>
</Where>
ПервоначальноЯ имел атрибут Type элемента value как «Текст» (который также является значением по умолчанию, если Тип не указан), и получал сообщение «Возникло исключение. (Исключение из HRESULT: 0x80020009 (DISP_E_EXCEPTION))» ».
Затем я добавил правильный атрибут Type и по ошибке добавил атрибут LookupId к элементу FieldRef, который дал мне ноль результатов, но без ошибок.
Причина, по которой это выяснилось, довольно разумна, и я нашел описанную в http://sharepointmagazine.net/articles/writing-caml-queries-for-retrieving-list-items-from-a-sharepoint-list.По сути, указав Type = 'Lookup', вы сравниваете отображаемое значение с полем поиска, но если пройти один шаг и сказать, что LookupId = 'TRUE' для другого элемента означает "оценивать по идентификатору стороннего элемента, а неотображаемое значение ".
Так что, если вы используете CAML для запроса поля поиска, значение всегда должно иметь тип« Lookup », но то, будете ли вы использовать LookupId, будет зависеть от того, хотите ли вы сравнитьключ или значение поиска.