如何在 C# 中解析 Odata 过滤器字符串?
How to parse an Odata filter string in C#?
我正在尝试在 Azure table 存储中执行 table 操作,以根据提供的过滤器检索实体。我允许用户在文本框中输入过滤器。
我需要在将过滤器字符串发送到 Azure 之前对其进行解析。我该怎么做?是否有预定义的方法或包可以执行解析此过滤器字符串?或者我必须手动编写正则表达式来执行此解析?
这是我的 Table 操作,之前没有进行任何解析。
var myFilterString = "PartitionKey eq '2' and ((PartitionKey eq '1' and RowKey eq '100') or RowKey eq '3')";
var entities = cloudTable.ExecuteQuerySegmented(new TableQuery().Where(myFilterString)).ToList();
提前致谢。
不,没有这种方法。这完全取决于它的设计方式。
查询通过 http 生成 api 调用。这意味着库不知道您的模式是否存在。它不知道你的分区键以及它们是否正确
检查下面的例子
var query = new TableQuery<SymmetricKey>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "SymmetricKey"));
这里的库显然是为了简化 http 调用的创建,仅此而已。
- 将查询的创建委托给您的用户总是一个坏主意。
这几乎从未发生过,因为您无法控制用户的行为。相反,创建一个包含一些 html 的选项列表,并根据用户的输入创建比较,而不是自由文本输入选项。
我正在尝试在 Azure table 存储中执行 table 操作,以根据提供的过滤器检索实体。我允许用户在文本框中输入过滤器。
我需要在将过滤器字符串发送到 Azure 之前对其进行解析。我该怎么做?是否有预定义的方法或包可以执行解析此过滤器字符串?或者我必须手动编写正则表达式来执行此解析?
这是我的 Table 操作,之前没有进行任何解析。
var myFilterString = "PartitionKey eq '2' and ((PartitionKey eq '1' and RowKey eq '100') or RowKey eq '3')";
var entities = cloudTable.ExecuteQuerySegmented(new TableQuery().Where(myFilterString)).ToList();
提前致谢。
不,没有这种方法。这完全取决于它的设计方式。
查询通过 http 生成 api 调用。这意味着库不知道您的模式是否存在。它不知道你的分区键以及它们是否正确
检查下面的例子
var query = new TableQuery<SymmetricKey>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "SymmetricKey"));
这里的库显然是为了简化 http 调用的创建,仅此而已。
- 将查询的创建委托给您的用户总是一个坏主意。
这几乎从未发生过,因为您无法控制用户的行为。相反,创建一个包含一些 html 的选项列表,并根据用户的输入创建比较,而不是自由文本输入选项。