C# 使用表达式将查询提取到Azure表存储

C# 使用表达式将查询提取到Azure表存储,c#,azure,C#,Azure,我正在创建一个类来使用Azure表存储执行CRUD功能 我在这里使用泛型类型 我有下面的方法,我正试图传入一个表达式,以便在TableQuery中使用,但我遇到了一些问题 行TableQuery query=new TableQuery()。其中(条件)无法编译,并给我消息 Cannot implicitly convert type 'System.Linq.IQueryable<T>' to 'Microsoft.WindowsAzure.Storage.Table.TableQ

我正在创建一个类来使用Azure表存储执行CRUD功能

我在这里使用泛型类型

我有下面的方法,我正试图传入一个表达式,以便在
TableQuery
中使用,但我遇到了一些问题

TableQuery query=new TableQuery()。其中(条件)无法编译,并给我消息

Cannot implicitly convert type 'System.Linq.IQueryable<T>'
to 'Microsoft.WindowsAzure.Storage.Table.TableQuery<T>'. 
An explicit conversion exists (are you missing a cast?)
无法隐式转换类型'System.Linq.IQueryable'
转到“Microsoft.WindowsAzure.Storage.Table.TableQuery”。
存在显式转换(是否缺少强制转换?)
我理解这条信息,知道它告诉我我错过了一个演员阵容,尽管我不确定如何正确地编码

我的全部方法是:

 public List<T> GetSome<T>(Expression<Func<T, bool>> criteria) where T : ITableEntity, new()
 {

        TableQuery<T> query = new TableQuery<T>().Where<T>(criteria); // <---- This line isn't working

        List<T> results = table.ExecuteQuery<T>(query).ToList<T>();

        return results;
 }
public List GetSome(表达式条件),其中T:ITableEntity,new()
{

TableQuery=新建TableQuery()。其中(条件);//错误是因为扩展方法返回的值是类型,但您正在分配给类型为
TableQuery
的变量,并且这些类型之间没有隐式有效的类型转换。

好的,所以我找到了它-如何为Azure表存储传递lambda表达式以供使用

我将我的方法更改为:

 public List<T> GetSome<T>(Expression<Func<T, bool>> criteria) where T : ITableEntity, new()
 {                        
    // table, in this case, is my `CloudTable` instance
    List<T> results = table.CreateQuery<T>().Where(criteria).ToList();

    return results;
 }
如果这是针对Azure Table Store您不会/不应该做的事情,请务必让我知道


同时,这也是我满足要求的方式。

我理解这一点。我所挣扎的是如何让它工作。我认为我使用了错误的方法,但不确定我应该使用哪些方法来传递lambda。这也正是我所寻找的。我也很难编写代码来翻译表达式到表存储查询
 // my table storage class
 TableStorage ts = new TableStorage("ContactData");

 // search with expression
 List<DynamicTableEntity> results = ts.GetSome<DynamicTableEntity>(t => t.Properties["FirstName"].StringValue == "Darren");