如何在 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> 谓词,而不是转换成字符串谓词。 TableQuery carQuery = new TableQuery()。 Select(new List "Make", "Model", "Year", "Vin" ).Where("Year gt 2010");参考:docs.microsoft.com/en-us/azure/…

以上是关于如何在 azure 表存储中使用 new TableQuery<T>的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 c# 在 azure 表存储中查找 2 dateTime 之间的小时数

如何在 Azure Blob 存储中备份和还原 Azure SQL 表,反之亦然

如何在 C# 中获取 Azure 表存储中的所有行?

如何向现有的 Azure 表存储添加新列

如何使用 OData 筛选器筛选 Azure 表存储中的布尔值?

如何将属性排除在 Azure 表存储中?