如何在 where 条件下使用其他 属性 值更新 Azure 存储 Table 一个特定的 属性 值?

How to update Azure Storage Table one specific property values using other property value in where condition?

假设我有以下 table 存储 table NAMED Tbl_ResourceCost.

现在,我想使用分区键和 ResourceGuID 更新扩展成本。因此,如果我在 WHERE 条件下将 xxx01 作为 PartitionKey 和 zzz01 作为 ResourceGuID 传递,那么它将更新 only 我的扩展成本(即 100 和 200)比方说 700.

如果我们在 SQL 中考虑更新,则查询将是“UPDATE Tbl_ResourceCost set ExtendedCost=700 where PartitionKey=xxx01 and ResourceGuID=zzz01”。它将在一次执行中同时将 100 和 200 更新为 700。

我正在寻找 C# 中的类似查询以在 Azure 存储中更新 Table。我正在使用 NuGet 包作为:Microsoft.Azure.Cosmos.Table

如果要更新Azure table 存储实体的属性,我们需要提供分区键和行键。详情请参考here。因此,根据您的需要,我们需要查询 Azure table 存储以获取这些您需要的实体,然后更新这些。

例如

using Microsoft.Azure.Cosmos.Table;
using System.Threading.Tasks;
using System;
namespace Storage
{
    class Program
    {
        static async Task Main(string[] args)
        {
           
            string connectionString = "";
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
            CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
            var table =tableClient.GetTableReference("test");

            TableQuery<MyEntity> myQuery = new TableQuery<MyEntity>().Where(
                    TableQuery.CombineFilters(
                    TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, ""),
                        TableOperators.And,
                    TableQuery.GenerateFilterCondition("ResourceGuID", QueryComparisons.Equal,"")));

            foreach (MyEntity entity in table.ExecuteQuery(myQuery))
            {
                entity.ExtendedCost = ;
                TableOperation insertOrMergeOperation = TableOperation.InsertOrMerge(entity);
                TableResult result = await table.ExecuteAsync(insertOrMergeOperation);
                var s = result.Result as MyEntity;
               Console.WriteLine(s.ExtendedCost )
            }

        }      
    }

    public class MyEntity : TableEntity
    {
        public MyEntity()
        {
        }

  
        public string ResourceGuID{ get; set; }

        public Int32 ExtendedCost { get; set; }

    }
}