Параметр запроса simple.odata.client

У меня есть API веб-служб (с конечной точкой OData, называемой piperuns, использующей ODataController), которая принимает необязательную строку запроса (называемую projectNumber), например:

http://localhost:59636/piperuns?projectNumber=1

У меня есть клиент, основанный на Simple.OData.Client, и я не могу понять, как передать эту необязательную строку запроса... Я использую динамический синтаксис и могу получить piperuns (без параметра запроса), используя следующий синтаксис:

ODataFeedAnnotations annotations = new ODataFeedAnnotations();
ODataClient client = new ODataClient("http://localhost:59636/");

var x = ODataDynamic.Expression;
IEnumerable<dynamic> pipeRunsNext = await(Task<IEnumerable<Simple.OData.Client.ODataEntry>>)client
                .For(x.piperuns)
                .FindEntriesAsync(annotations.NextPageLink, annotations);

Но я не нашел никакой информации о том, как включить необязательный параметр строки запроса, если это необходимо?

Спасибо!

1 ответ

Для условий, которые включают свойства модели метаданных, вы должны использовать предложение Filter:

IEnumerable pipeRunsNext = await client
  .For(x.piperuns)
  .Filter(x.projectNumber == "1")
  .FindEntriesAsync(annotations.NextPageLink, annotations);

Однако, если дополнительное предложение не связано с моделью, я бы использовал перегрузку Filter, которая принимает строку:

IEnumerable pipeRunsNext = await client
  .For(x.piperuns)
  .Filter("projectNumber == '1'")
  .FindEntriesAsync(annotations.NextPageLink, annotations);

Теперь вы можете использовать QueryOptions для передачи настраиваемых параметров запроса.

например

IEnumerable pipeRunsNext = await client
  .For(x.piperuns)
  .QueryOptions("projectNumber=1")
  .FindEntriesAsync(annotations.NextPageLink, annotations);
Другие вопросы по тегам