【发布时间】:2011-12-06 09:51:26
【问题描述】:
我有一个 OData 服务,我正在尝试按 ID 列表进行过滤; 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”子句?
【问题讨论】:
标签: linq collections filter odata