根据OData查询评估单个对象

时间:2018-08-22 11:55:45

标签: c# odata

我有一个用C#编写的应用程序。在该应用中,我将C#对象序列化为JSON。在稍后的时间点,我想查看单个对象是否与OData $ filter字符串“匹配”。换句话说,我想使用像Regex.Match这样的OData $ filter。

我的问题是,有办法吗?我评估过的所有内容都使用LINQ。这意味着需要IQueryable。这意味着我必须首先将C#对象添加到某个集合中。这似乎增加了开销。

是否可以像使用Regex.Match方法一样使用OData $ filter?谢谢!

1 个答案:

答案 0 :(得分:0)

基于您对我的评论的回答,除非我对您有误解。

您无需将对象存储在IQueryable中,以实现以下目的:

//your object, with [DataContract] and [DataMember] attributes
var yourObject = new YourObject();

//populate the properties or whatever you want with your object
yourObject.Blabla = 1;

//serialize your object into a string
var objectSerialized = JsonConvert.SerializeObject(yourObject);

//your Regex string pattern, something like this?
var pattern = Odata.Filter;

//Use Regex to try to match the  pattern with the serialized object, no IQueryable needed
var match = Regex.Match(objectSerialized, pattern);

//See if the regex matched
if (match.Success)
    //do something