Запрос OData «где ID в списке»

У меня есть служба OData, в которой я пытаюсь отфильтровать список идентификаторов; эквивалент в SQL будет выглядеть примерно так:

SELECT * FROM MyTable WHERE TableId IN (100, 200, 300, 400)

Свойство, которое я пытаюсь отфильтровать, набрано как Int32. Я пробовал следующее, что дает мне ошибку «Оператор 'add' несовместим с типами операндов 'Edm.String' и 'Edm.Int32'»:

string ids = ",100,200,300,400,";
from m in provider.Media where ids.Contains("," + t.media_id + ",")

, а также

string ids = ",100,200,300,400,";
from m in provider.Media where ids.Contains("," + t.media_id.ToString() + ",")

и

string ids = ",100,200,300,400,";
from m in provider.Media where ids.Contains("," + Convert.ToString(t.media_id) + ",")

и

string ids = ",100,200,300,400,";
from m in provider.Media where ids.Contains(string.Concat(",", t.media_id, ","))

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

Есть ли способ сделать то, что я пытаюсь сделать, или я застрял в создании текстового фильтра и использовании AddQueryOption, итерации по списку и ручного добавления предложений «или media_id eq 100»?

51
задан technophile 12 October 2011 в 08:10
поделиться