C# 使用列表上的TableQuery.CombineFilters执行AND操作
在使用AND和foreach循环附加条件的情况下,如何为myQuery分配初始值 我正在努力做到以下几点:C# 使用列表上的TableQuery.CombineFilters执行AND操作,c#,azure,azure-table-storage,azure-tablequery,C#,Azure,Azure Table Storage,Azure Tablequery,在使用AND和foreach循环附加条件的情况下,如何为myQuery分配初始值 我正在努力做到以下几点: string myQuery = string.empty; foreach (string myCondition in myConditionLists) { myQuery = TableQuery.CombineFilters( myQuery, TableOperators.And, TableQuery.GenerateFilterCo
string myQuery = string.empty;
foreach (string myCondition in myConditionLists)
{
myQuery = TableQuery.CombineFilters(
myQuery,
TableOperators.And,
TableQuery.GenerateFilterCondition(nameof(MyClass.MyProperty),
QueryComparisons.NotEqual, myCondition));
}
调试时,我看到一个“()”的初始语句,它似乎不正确。另一种方法是将query的第一个元素分配到myQuery中,并从第二个元素开始增长。有没有一种优雅的方法可以做到这一点?您可以指定一个整数值,并在循环中为每个迭代添加1。当它等于1时,将初始值设置为myQuery字符串 示例代码如下:
static void Main(string[] args)
{
CloudStorageAccount storageAccount = new CloudStorageAccount(new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials("your_account", "your_key"),true);
// Create the table client.
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
// Create the CloudTable object that represents the "people" table.
CloudTable table = tableClient.GetTableReference("people");
string myQuery = string.Empty;
List<string> myConditionLists = new List<string>();
myConditionLists.Add("Ben1");
myConditionLists.Add("Ben2");
myConditionLists.Add("Ben3");
myConditionLists.Add("Ben4");
myConditionLists.Add("Ben5");
//specify an integer value
int i = 0;
foreach (string myCondition in myConditionLists)
{
i++;
//if i == 1, specify the initial value to the myQuery string.
if (i == 1) { myQuery = TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.NotEqual, myCondition); }
else
{
myQuery = TableQuery.CombineFilters(
myQuery,
TableOperators.And,
TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.NotEqual, myCondition)
);
}
}
TableQuery<CustomerEntity> query = new TableQuery<CustomerEntity>().Where(myQuery);
foreach (CustomerEntity entity in table.ExecuteQuery(query))
{
Console.WriteLine("{0}, {1}\t{2}\t{3}", entity.PartitionKey, entity.RowKey,
entity.Email, entity.PhoneNumber);
}
Console.WriteLine("---completed---");
Console.ReadLine();
}
static void Main(字符串[]args)
{
CloudStorageAccount storageAccount=新的CloudStorageAccount(新的Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(“您的\u帐户”、“您的\u密钥”),true);
//创建表客户端。
CloudTableClient tableClient=storageAccount.CreateCloudTableClient();
//创建表示“人员”表的CloudTable对象。
CloudTable=tableClient.GetTableReference(“人”);
string myQuery=string.Empty;
List myConditionLists=新列表();
MyConditionList.添加(“Ben1”);
MyConditionList.添加(“Ben2”);
MyConditionList.添加(“Ben3”);
MyConditionList.添加(“Ben4”);
MyConditionList.添加(“Ben5”);
//指定一个整数值
int i=0;
foreach(myconditionlist中的字符串myCondition)
{
i++;
//如果i==1,则指定myQuery字符串的初始值。
如果(i==1){myQuery=TableQuery.GenerateFilterCondition(“RowKey”,QueryComparisons.NotEqual,myCondition);}
其他的
{
myQuery=TableQuery.CombineFilters(
我的疑问,
表3.以及,
TableQuery.GenerateFilterCondition(“行键”,QueryComparisons.NotEqual,myCondition)
);
}
}
TableQuery=新建TableQuery()。其中(myQuery);
foreach(表中的CustomerEntity实体。ExecuteQuery(查询))
{
Console.WriteLine(“{0},{1}\t{2}\t{3}”,entity.PartitionKey,entity.RowKey,
实体。电子邮件,实体。电话号码);
}
Console.WriteLine(“--completed--”);
Console.ReadLine();
}
我的桌子:
测试结果:
您好,下面的答案对您有效吗?初步测试表明它有效,但我将进行更多测试以确认。有任何更新吗?:)