如何在 azure 表存储中使用 new TableQuery<T>
Posted
技术标签:
【中文标题】如何在 azure 表存储中使用 new TableQuery<T>【英文标题】:How to make use of new TableQuery<T> in azure table storage 【发布时间】:2014-12-14 05:33:03 【问题描述】:我正在尝试创建一个通用方法来仅读取 azure 表的某些属性。创建这个我使用 TableQuery,但有些我无法通过过滤条件
public IEnumerable<T1> ExecuteQuery<T, T1>(Expression<Func<T,bool>> predicate)
where T : TableEntity, IDomainData, new()
where T1 : new()
Type typeParameterType = typeof(T);
CloudTable tableReference = tableClient.GetTableReference(typeParameterType.Name);
var query = new TableQuery<T>()
FilterString = predicate.Body.ToString(),
SelectColumns = typeof(T1).GetListOfPropertyNames()
;
query = query.Where(predicate).AsTableQuery(); ==> Throws error Object reference error
return tableReference.ExecuteQuery(query) as List<T1>;
//return tableReference.ExecuteQuery<T, T1>(query,EntityAdapter.AdapterResolver<T1>);
是否有将 Filterstring 传递给 TableQuery 并使用 azure 表实例执行 TableQuery 的地方
【问题讨论】:
【参考方案1】:如果您尝试从表中获取属性子集以及过滤条件,则必须使用 Select 和 Where 子句指定它,如下所示 -
TableQuery<T> query = new TableQuery<T>().Select(new List<string>() "prop1", "prop2" ).Where("filter string");
List<T> result = currentTable.ExecuteQuery(query).ToList();
此外,存储客户端库中还有一些帮助方法,您可以使用它们来构造过滤器字符串。请参阅 TableQuery.GenerateFilterCondition。
【讨论】:
我在寻找 Expression以上是关于如何在 azure 表存储中使用 new TableQuery<T>的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 c# 在 azure 表存储中查找 2 dateTime 之间的小时数
如何在 Azure Blob 存储中备份和还原 Azure SQL 表,反之亦然