gpt4 book ai didi

c# - 使用表达式将查询抽象到 Azure 表存储

转载 作者:行者123 更新时间:2023-11-30 22:06:06 25 4
gpt4 key购买 nike

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

我在此使用泛型类型。

我有以下方法,我试图传递一个表达式以在 TableQuery 中使用,但我遇到了一些问题。

线路TableQuery<T> query = new TableQuery<T>().Where<T>(criteria);不会编译,并给我消息

Cannot implicitly convert type 'System.Linq.IQueryable<T>'
to 'Microsoft.WindowsAzure.Storage.Table.TableQuery<T>'.
An explicit conversion exists (are you missing a cast?)

我理解这条消息,并且知道它告诉我我缺少一个 Actor ,尽管我不确定如何正确编码。

我的完整方法是:

 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;
}

最佳答案

好的,我想通了 - 如何传入 lambda 表达式供 Azure 表存储使用。

我将方法更改为以下内容:

 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;
}

我现在可以传入一个表达式。例如,要搜索 DynamicTableEntity 我可以使用:

 // my table storage class
TableStorage ts = new TableStorage("ContactData");

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

如果您不会/不应该针对 Azure 表存储执行此操作,请告诉我。

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

关于c# - 使用表达式将查询抽象到 Azure 表存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23831833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com