Caml-запрос для поля lookupmulti равен только одному значению
Я хочу отфильтровать список Sharepoint с помощью запроса caml для поля lookupmulti, но я хочу отфильтровать элементы, которые имеют только одно значение. Например,
ID LookupMultiField
1 - Значение1, Значение2, Значение11
2 - Значение1
3 - Значение2, Значение3, Значение4
Когда я использую выражение Eq только для значения "Значение1", в моем результате запроса отображаются элементы с идентификаторами 1 и 2. Но я хочу получить элемент только с идентификатором 2. Как это возможно?
2 ответа
Я не думаю, что есть способ сделать это непосредственно в CAML на вашем LookupMultiField.
Самый простой способ - это получить все элементы с помощью Value1, а затем выполнить дополнительную фильтрацию в вашем коде.
Другой подход заключается в том, чтобы скопировать свой LookupMultiField в текстовое поле (например, через рабочий процесс) и выполнить фильтрацию в этом текстовом поле.
Если у вас есть только несколько значений, вы также можете попытаться отменить условие фильтрации (поданные NEQ Value2 и NEQ value3 и...).
Вы можете использовать оператор "содержит", как:
<Where>
<Contains>
<FieldRef Name="LookupMultiField" LookupId="True"/>
<Value Type="Text">1</Value>
</Contains>
</Where>
Но вы должны знать элемент фильтра ID