Как я могу написать SPQuery для фильтрации элементов на основе LinkFieldValue? - PullRequest
0 голосов
/ 12 июля 2010

Мне нужно выбрать одно значение из списка SharePoint на основе значения поля.Тип поля - LinkFieldValue.Как мне написать запрос CAML?

Когда я выбираю элементы с пустым запросом, я получаю все элементы в списке, как ожидалось.

Когда я добавляю ограничения к запросу,возвращает пустой результат.Я попытался построить запрос следующим образом:

string.Format("<Where><Eq><FieldRef Name=\"PollInstancePoll\" /><Value "
+"Type=\"Text\">{0}</Value></Eq></Where>",
new LinkFieldValue { NavigateUrl = "/az/Lists/Polls/DispForm.aspx?ID=1",
Text = "example poll" });

, что приводит к следующему тексту запроса:

<Where><Eq><FieldRef Name="PollInstancePoll" />
<Value Type="Text"><a href="/az/Lists/Polls/DispForm.aspx?ID=1">example poll</a></Value>
</Eq></Where>

1 Ответ

1 голос
/ 12 июля 2010

Я решил свою проблему с помощью следующего запроса:

new SPQuery
{
    Query =
        CAML.Where(
            CAML.And(
                CAML.Contains(
                    CAML.FieldRef("PollInstancePoll"),
                    CAML.Value(pollPath)),
                CAML.Contains(
                    CAML.FieldRef("PollInstancePage"),
                    CAML.Value(pagePath))))
};

По сути, я проверяю только часть URL поля Link и предоставляю значение для сравнения как Type="Text".Важно помнить, что SharePoint хранит значения в базе данных всегда как относящиеся к серверу URL-адреса.

...