C# 根据OData查询计算单个对象

C# 根据OData查询计算单个对象,c#,odata,C#,Odata,我有一个用C写的应用程序。在那个应用程序中,我将C#对象序列化为JSON。稍后,我想查看单个对象是否与OData$筛选器字符串“匹配”。换句话说,我想使用OData$过滤器,比如Regex.Match 我的问题是,有没有办法做到这一点?我评估过的所有东西都使用LINQ。这意味着需要一个IQueryable。这意味着我必须首先将我的C#对象添加到某个集合中。这似乎是一种增加开销的黑客行为 有没有一种方法可以像使用Regex.Match方法一样使用OData$过滤器?谢谢 基于您对我评论的回复,除非

我有一个用C写的应用程序。在那个应用程序中,我将C#对象序列化为JSON。稍后,我想查看单个对象是否与OData$筛选器字符串“匹配”。换句话说,我想使用OData$过滤器,比如
Regex.Match

我的问题是,有没有办法做到这一点?我评估过的所有东西都使用LINQ。这意味着需要一个
IQueryable
。这意味着我必须首先将我的C#对象添加到某个集合中。这似乎是一种增加开销的黑客行为


有没有一种方法可以像使用
Regex.Match
方法一样使用OData$过滤器?谢谢

基于您对我评论的回复,除非我误解了您

您无需将对象存储在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

我觉得你的问题有点模棱两可。“我想像Regex.Match一样使用OData$过滤器”,这是什么意思?Odata$过滤器是一个字符串,而Regex.Match完全是另一个东西。@Philzax-一个正则表达式字符串,让您可以根据模式进行匹配。
$filter
字符串是特定光线下的模式。只有与
$filter
模式匹配的项才能在结果集中看到。如果该项与
$filter
模式不匹配,则不包括在结果集中。我的问题是,OData to Linq世界中的所有东西都需要一个集合。我只想对单个对象运行此测试。我不认为这是模棱两可的。基本上,我想使用一种不同的模式匹配语言。我想使用OData字符串,而不是正则表达式字符串。因此,您只想使用OData$筛选器字符串作为模式,并检查它是否与一个对象的序列化JSON字符串匹配?@Philzax这是正确的。