小编tec*_*ile的帖子

OData"列表中的ID"查询

我有一个OData服务,我试图通过ID列表过滤; SQL等价物将是这样的:

SELECT * FROM MyTable WHERE TableId IN (100, 200, 300, 400)
Run Code Online (Sandbox Code Playgroud)

我想要过滤的属性是作为Int32键入的.我尝试了以下内容,它给出了一个错误"运算符'添加'与操作数类型'Edm.String'和'Edm.Int32'不兼容":

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

以及

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

和

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

和

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

如您所见,目前我正在使用LINQ来查询服务.

有没有办法,我可以做我正在尝试的,或者我是不是构建文本过滤器和使用AddQueryOption,并迭代列表并手动添加"或media_id eq 100"条款?

linq collections filter odata

51
推荐指数
3
解决办法
4万
查看次数

DataContractSerializer:处理您不知道且无法访问其类型的对象

我有一个使用DataContractSerializer进行序列化和反序列化的类(称为Container)。该类包含其他类的集合,所有其他类都继承相同的基类(称为ContentsBase),但是具有不同的派生类。可以向应用程序传递一个序列化的Container对象,该对象包含ContentsBase派生的对象,这些对象的实现我不知道或无法访问 -即,编译后的代码在本地不可用。我需要通过“忽略”我不知道的类型来反序列化此对象(我不需要往返访问它们)。

除了采用序列化的XML并编写一些自定义代码来遍历该序列并在反序列化之前删除未知元素之外,我有什么办法可以做到这一点?还是这是我唯一的选择?

serialization datacontractserializer .net-3.5

5
推荐指数
1
解决办法
1026
查看次数