在列表上使用TableQuery.CombineFilters进行AND操作

时间:2018-11-12 19:03:23

标签: c# azure-table-storage azure-tablequery

如何在要使用AND和foreach循环附加条件的myQuery中分配初始值。

我正在尝试执行以下操作:

string myQuery = string.empty;

foreach (string myCondition in myConditionLists)
{
    myQuery = TableQuery.CombineFilters(
        myQuery,
    TableOperators.And,
    TableQuery.GenerateFilterCondition(nameof(MyClass.MyProperty), 
        QueryComparisons.NotEqual, myCondition));
}

当我调试时,我看到初始语句“()”似乎不太正确。另一种方法是将第一个元素的查询分配到myQuery中,然后从第二个元素增长。有没有一种优雅的方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以指定一个整数值,并在循环中为每次迭代加1。等于1时,将初始值设置为myQuery字符串。

示例代码如下:

 静态void Main(string [] args)
        {
            CloudStorageAccount storageAccount =新的CloudStorageAccount(新的Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(“ your_account”,“ your_key”),true);

            //创建表客户端。
            CloudTableClient tableClient = storageAccount.CreateCloudTableClient();

            //创建代表“人物”表的CloudTable对象。
            CloudTable table = tableClient.GetTableReference(“ people”);

            字符串myQuery = string.Empty;

            List  myConditionLists =新的List ();
            myConditionLists.Add(“ Ben1”);
            myConditionLists.Add(“ Ben2”);
            myConditionLists.Add(“ Ben3”);
            myConditionLists.Add(“ Ben4”);
            myConditionLists.Add(“ Ben5”);

            //指定一个整数值
            int i = 0;

            foreach(myConditionLists中的字符串myCondition)
            {
                i ++;
                //如果i == 1,则为myQuery字符串指定初始值。
                如果(i == 1){myQuery = TableQuery.GenerateFilterCondition(“ RowKey”,QueryComparisons.NotEqual,myCondition); }
                其他
                {
                    myQuery = TableQuery.CombineFilters(
                        myQuery,
                        表运算符
                        TableQuery.GenerateFilterCondition(“ RowKey”,QueryComparisons.NotEqual,myCondition)
                        );
                }
            }

            TableQuery 查询=新的TableQuery ()。Where(myQuery);

            foreach(table.ExecuteQuery(query)中的CustomerEntity实体)
            {
                Console.WriteLine(“ {0},{1} \ t {2} \ t {3}”,entity.PartitionKey,entity.RowKey,
                    实体。电子邮件,实体。电话号码);
            }


            Console.WriteLine(“ --- completed ----”);
            Console.ReadLine();
        }
 

我的桌子:

”在此处输入图片描述“

测试结果:

”在此处输入图片描述“