如何在要使用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中,然后从第二个元素增长。有没有一种优雅的方法可以做到这一点?
答案 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();
}
我的桌子:
测试结果: