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

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