- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试做一些看起来很简单的事情,但当我想让它变得更加动态时,我遇到了巨大的困难。
Expression<Func<TableServiceEntity, bool>> predicate = (e) => e.PartitionKey == "model" && (e.RowKey == "home" || e.RowKey == "shared");
context.CreateQuery<TableServiceEntity>(tableName).Where(predicate);
我想传递一个 rowKey 数组,而不必对谓词进行硬编码。
当我尝试构建表达式树时,我收到不支持的异常,我认为它不支持作为表达式树的一部分进行调用。
有人知道如何完全按照谓词构建和表达树以避免不支持的异常吗?
提前谢谢您
最佳答案
因此,您可以使用类似以下内容动态构建查询(取自 PhluffyFotos 示例):
Expression<Func<PhotoTagRow, bool>> search = null;
foreach (var tag in tags)
{
var id = tag.Trim().ToLowerInvariant();
if (String.IsNullOrEmpty(id))
{
continue;
}
Expression<Func<PhotoTagRow, bool>> addendum = t => t.PartitionKey == id;
if (search == null)
{
search = addendum;
}
else
{
search = Expression.Lambda<Func<PhotoTagRow, bool>>(Expression.OrElse(search.Body, addendum.Body), search.Parameters);
}
}
现在,一旦您有了“搜索”,您就可以将其作为Where 子句中的谓词传递。
但是,我想说服你不要这样做。我正在回答你的问题,但告诉你做多个“|”是一个坏主意表存储中的 OR 子句。原因是至少在今天,这些查询无法优化,并且会导致全表扫描。对于任何不小的数据量,性能都将是可怕的。此外,如果您像这样动态构建谓词,您就会面临超出 URL 限制的风险(请记住这一点)。
PhluffyFotos 中的这段代码展示了如何操作,但这实际上是一个不好的做法(我知道,我写的)。它确实应该优化为单独并行运行每个 OR 子句。这才是你真正应该做的。 AND 子句没问题,但 OR 子句应该并行化(使用 PLINQ 或 TPL),并且您应该聚合结果。会快很多。
HTH。
关于linq - TableServiceContext和动态查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5976457/
[输入 azure 表 noob]我能找到的有关 Azure 表存储的所有文章都指定了 Microsoft.WindowsAzure.StorageClient 中与 TableServiceCont
我有一个 azure 表记录对象定义为 [DataServiceKey("PartitionKey", "RowKey")] public class TableRecord { public
我只是在摆弄 F# 和 Azure,但对 TableServiceContext 感到困惑。我正在转换this post到 F# 实现中,该实现进展顺利,直到到达实际查询数据的地步。在 C# 中,代码
我有以下数据结构: [DataServiceEntity] public class User { public string RowKey { get; set; } public
我只是在摆弄 F# 和 Azure,但对 TableServiceContext 感到困惑。我正在转换this post到 F# 实现中,该实现进展顺利,直到到达实际查询数据的地步。在 C# 中,代码
我有以下数据结构: [DataServiceEntity] public class User { public string RowKey { get; set; } public
我正在使用 tableServiceContext.CreateQuery 方法,现在(升级到 Azure SDK 2.5 后)它说 * Support for accessing Windows A
给定一个CloudTableQuery和/或DataServiceQuery,是否可以获取生成查询的TableServiceContext? 最佳答案 是的,这可以使用反射来实现。下面是一个扩展方法,
在 ASP.NET MVC 3 Web Role 中,我意识到我已经编写了很多下面的代码: var account = CloudStorageAccount.Parse( R
我正在使用 Azure Toolkit 编写 Windows Phone 7 应用程序.我还使用 NUnit Test Runner for WP7 为其创建单元测试。 . 现在,我想测试一个代码,它
我之前使用的是 Microsoft.WindowsAzure.StorageClient 1.7 以及所有使用 TableServiceContext 的 DAL 方法。添加、删除、更新、获取、查找和
我是一名优秀的程序员,十分优秀!