2014-10-18 51 views
1

我想创建一个通用的方法来只读取天蓝色表的一些属性。创建这个林利用TableQuery的,但一些如何IM无法通过筛选条件如何使用新的TableQuery <T>蔚蓝表存储

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与蔚蓝的表实例

回答

1

如果您正试图执行TableQuery得到了过滤条件沿着表格属性的一个子集,你会拥有它使用选择和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。

+0

我正在寻找表达式>谓词,而不是转换为字符串谓词。 – user145610 2014-11-11 18:55:19

+0

TableQuery carQuery = new TableQuery ()。 选择(新列表 {“Make”,“Model”,“Year”,“Vin”})。参考:https://docs.microsoft.com/en-us/azure/vs-azure-tools-table-designer-construct-filter-strings – Abhi 2018-02-04 05:02:11