【发布时间】:2019-12-14 00:02:59
【问题描述】:
我想使用 linq 表达式针对 Azure 表存储查询数据。
目前我正在使用 TableQuery.GenerateFilterCondition,它不能提供我想要的灵活性。
我使用的代码是:
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
cloudTable = tableClient.GetTableReference("Data");
//QueryFilters.GetQueryExpression(searchParameters);
//string expBody = ((LambdaExpression)whereClause).Body.ToString();
string filter1 = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "PBIFinalData");
var condition = TableQuery.GenerateFilterCondition("Number", QueryComparisons.Equal, "98880302");
string filterRange = TableQuery.CombineFilters(filter1, TableOperators.And, condition);
TableQuery<MCIOData> query = new TableQuery<MCIOData>().Where(filterRange);
我想组合多个过滤条件,每个条件可能有一个或多个值要在表中查找。
我已经创建了 lambda 表达式,但我应该使用哪个函数 传递那个 lambda 表达式以获得结果
.
internal static Expression<Func<Data, bool>> GetQueryExpression(List<FieldTemplate> searchParameters)
{
var param = Expression.Parameter(typeof(Data));
Expression exp = null;
if (searchParameters.Count() == 1)
{
exp = GetQuery(param, searchParameters[0]);
}
else
{
exp = GetQuery(param, searchParameters[0]);
if (exp != null)
{
for (int i = 1; i < searchParameters.Count(); i++)
{
exp = Expression.And(exp, GetQuery(param, searchParameters[i]));
}
}
}
return Expression.Lambda<Func<MCIOData, bool>>(exp, param);
}
【问题讨论】:
标签: c# azure .net-core azure-table-storage