У меня есть служба OData, где я пытаюсь фильтровать по списку идентификаторов;SQL-эквивалент будет выглядеть примерно так:
SELECT * FROM MyTable WHERE TableId IN (100, 200, 300, 400)
Свойство, по которому я пытаюсь фильтровать, имеет тип Int32.Я пробовал следующее, что дает мне ошибку «Оператор« добавить »несовместим с типами операндов« 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"?