gpt4 book ai didi

c# - 查询 Azure 表存储 - 使用静态值数组进行比较

转载 作者:行者123 更新时间:2023-11-30 15:29:57 26 4
gpt4 key购买 nike

我需要修改现有的 Azure 表存储查询,假设 i 是一个整数查询检索最新报告:

string rowCompare = String.Format(CommonDefs.inverseTimeStampRowKeyFormat, DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks);
var result = (from er in this.serviceContext.EntityReportsTable
where er.PartitionKey.Equals(i.ToString(), StringComparison.OrdinalIgnoreCase) && er.RowKey.CompareTo(rowCompare) > 0
select er).Take(1)).FirstOrDefault();

我需要修改它以检索多个已知实体的最新报告,用整数数组替换单个整数 i - 例如 int[]{1, 6, 10}。

除了对数组中的每个参数顺序运行现有查询之外,还有其他方法可以在一个查询中完成此操作吗?就像 Sql 中的 IN 子句一样?

最佳答案

您可以使用最新版本的 Azure 存储客户端库,这是您的任务的完整伪代码:

var rowCompare = String.Format("{0}", DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks);
var items = new []{"1", "6", "10"};

var filters =
items.Select(key => TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, key)).ToArray();

var combine =
filters.Length > 0
? filters[0]
: null;

for (var k = 0; k < filters.Length; k++)
combine = TableQuery.CombineFilters(combine, TableOperators.Or, filters[k]);

var final = TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.GreaterThan, rowCompare);
if (!string.IsNullOrEmpty(combine))
final = TableQuery.CombineFilters(final, TableOperators.And, combine);

var query = new TableQuery<EntityReport>().Where(final);

var client = CloudStorageAccount.DevelopmentStorageAccount.CreateCloudTableClient();
var table = client.GetTableReference("EntityReports");
var result = table.ExecuteQuery(query);

关于c# - 查询 Azure 表存储 - 使用静态值数组进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22935921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com