问题标签 [query-expressions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3916 浏览

f# - 如何在 F# 中编写查询表达式?

我一直在这里查看查询表达式http://msdn.microsoft.com/en-us/library/vstudio/hh225374.aspx

我一直想知道为什么以下是合法的

但你不能真的做这样的事情

当然 F# 允许像这样的可组合性,因此您可以重用谓词?如果我想要圣诞节标题与特定日期之前的另一个谓词相结合怎么办?我必须复制并粘贴我的整个查询?C# 与此完全不同,它有多种构建和组合谓词的方法

0 投票
2 回答
1512 浏览

f# - 没有 for..in..do 的扩展计算表达式

我所说的扩展计算表达式是指具有通过CustomOperation属性定义的自定义关键字的计算表达式。

在阅读扩展计算表达式时,我遇到了@kvb 的非常酷的 IL DSL:

我想知道在不使用for..in..do构造的情况下如何组成操作。我的直觉是它从x.Zero成员开始,但我没有找到任何参考来验证这一点。

如果上面的例子技术性太强,这里有一个类似的 DSL,其中幻灯片的组件没有列出for..in..do

我有几个密切相关的问题:

  • 如何定义或使用没有For成员的扩展计算表达式(即提供一个小的完整示例)?如果它们不再是 monad,我不会太担心,我对它们开发 DSL 很感兴趣。
  • 我们可以使用let!和的扩展计算表达式return!吗?如果是,有什么理由不这样做吗?我问这些问题是因为我没有遇到任何使用let!and的例子return!
0 投票
3 回答
545 浏览

dynamics-crm-2011 - 应该使用什么来代替已弃用的 EntityName.account.ToString()?

当我设计QueryExpression时,我一直使用以下硬编码语法。

此博客中,使用了基于此枚举的以下语法。

我更喜欢它,但我无法使用智能感知找到它。然后我发现了这个讨论,其中解释了语法已被弃用。

那么,应该使用什么来代替EntityName呢?我用谷歌搜索了一下,但找不到任何有用的东西。在我看来,在硬编码表达式之前应该首选某种枚举。那是对的吗?如果是这样,如何在 CRM 2011 中做到这一点?

0 投票
1 回答
1814 浏览

dynamics-crm-2011 - 如何独立于查询获取动态营销列表的成员

我正在尝试获取动态营销列表的成员列表。当它只有一个(或几个)列表时,我可以单独获取底层查询的结果。但是,当营销列表的数量增加时,一一抓取变得非常无效。

对于静态营销列表,我希望它应该是直截了当的。在基于我的QueryExpression对象中的联系人筛选与所有营销列表相对应的一组 guid 时,我应该能够获取实体联系人的所有实例(或用于创建它的任何基本类型) 。这是正确的认识吗?

(如何)我可以获取服务器上所有动态列表的所有底层成员吗?

在此处输入图像描述

编辑:这是自动生成的 fetch-XML。

0 投票
3 回答
39442 浏览

c# - FilterExpression 的多个条件

我正在使用 Condition 表达式,但我无法向FilterExpression. 任何人都可以帮忙吗?我在这里发布了我的源代码。

带有过滤器的条件表达式:

// 过滤器2

0 投票
2 回答
2049 浏览

dynamics-crm-2011 - 如何使用 QueryExpression 对象获取营销列表的成员?

我经常使用QueryExpression,但到目前为止,它是一个直接的 get-this-from-that 或 put-this-in-that。最近,我了解到有一个叫做LinkedEntity的东西,我开始寻找它。作为一个例子,我受到 SO 上的一个相关问题的启发,我开始创建一个表达式来获取列表中的所有成员,因为它是 guid。

不过,我发现的所有示例都遵循相同的模式 - 正如本示例所示。从这个问题中,我了解到这是一种过时的方法(CRM 4.0)。我未能找到更新的示例,我不确定如何设计链接。

有人愿意提供示例代码吗?

我创建了一个链接两个实体的 fetch-XML,但我不清楚如何将其转换为QueryExpression实体。我有这样的东西。有什么建议么?

0 投票
2 回答
1747 浏览

php - 实现类似 goMongoDB 的查询表达式对象评估

我一直在寻找类似 MongoDb 的http://docs.mongodb.org/manual/applications/read/#find、docs.mongodb.org/manual/reference/operators/查询表达式对象评估函数实现或一类。它可能不会涵盖所有高级功能,并且应该具有可扩展的架构。

类似 MongoDB 的查询表达式对象易于理解和使用,提供编写干净、自解释代码的能力,因为查询和要搜索的对象都是关联数组。

基本上说它是从 php 数组中提取信息的便捷功能。知道数组结构(arrayPath),它将允许对多维数组数据执行操作,而无需多个嵌套循环。

如果您不熟悉 MongoDb,请查看要搜索的给定表达式对象和数组。

为简单起见,我将其写为 JSON 字符串。对象内容没有意义,只是显示了 MongoDb 查询语法。

类似 MongoDb 的查询表达式对象

要搜索的数组

使用类似 Mongo 的查询表达式进行查找

因此,借助该函数,我们应该能够向目标数组发出以下查询。

使用类似 Mongo 的查询表达式获取数组路径

家庭作业

  • 我发现 gosner.net/articles/JsonPath/ 可能满足我的需求(不是完全匹配,因为它使用类似 Xpath 的表达式),需要注意的是,它严重依赖正则表达式和字符串解析,这肯定会慢与仅数组(类似 JSON)的实现相比,它下降了。

  • 我也在这里找到了一个类似的问题,@stackoverflow Evaluating MongoDB-like JSON Queries in PHP。得到的答案是使用一些 SPL 函数,我习惯于在大多数情况下避免使用这些函数。
    不知道作者是否提出了功能,他一直在努力开发。

  • 在 thereisamoduleforthat.com/content/dealing-deep-arrays-php 上找到了可能的 arrayPath 实现,因此缺少此实现是因为它依赖于指针。

我知道这不是一个简单的问题,这就是为什么我在开始我自己的课程的实际开发之前问它的原因。

我很欣赏架构技巧、相关或类似的代码,这可能是动态构建 php“if..else”表达式的一个很好的实践示例。强调文本

如何编写非 SPL 版本?

@Baba 提供了一个优秀的类,它是使用 SPL 编写的。我想知道如何在没有 SPL 的情况下重写此代码。

有两个原因

  • 多次调用该类会产生函数开销,这可以避免在原始 PHP 中重写它。
  • 它可以很容易地移植到 SPL 不可用的原始 Javascript,从而更容易在两个平台上进行代码维护。

结果

创建的ArrayQuery 类发布在 Github 上,请考虑签出存储库以获取更新。

SPL、原始 PHP 版本和 Chequer2 FORP分析器输出

简单来说-

  1. 原始 PHP 版本的执行速度比 SPL 版本快 10 倍,消耗的内存减少了 20%。
  2. Chequer2 类的执行速度比 PHP SPL 类慢 40%,比原始 PHP 版本慢近 20 倍。
  3. MongoDb 是最快的(比原始 PHP 实现快 10 倍,消耗的内存少 5 倍),除非您确定要避免与 MongoDb 交互,否则不要使用这些类。

MongoDb 版本

MongoDb 参考分析结果

声压级版本

带有 SPL 类分析结果的 PHP

原始 PHP(最新的 ArrayQuery 类)版本

原始 PHP ArrayQuery 类分析结果

Checker2 版本

Chequer2 PHP 类分析结果

MongoDb 参考测试分析代码

带有 SPL 类分析代码的 PHP

SPL 类parse()函数已稍作修改以在执行后返回值,也可以对其进行修改以接受表达式,但它对于分析目的并不是必需的,因为每次都会重新评估表达式。

原始 PHP(最新的 ArrayQuery 类)分析代码

checker2 PHP 分析代码

使用的数据(与他的回答中提供的@baba 相同)

forp-ui稍作修改的示例 ui 加载器(使用 ?profile=FILE_TO_PROFILE 调用)

0 投票
0 回答
284 浏览

php - sift.js(受MongoDB启发的数组过滤库)PHP端口

有一个sift.js库,它允许您使用MongoDB 语法查询JavaScript 数组。

我已经在我的问题中询问了这样的 PHP 类,并且到目前为止已经通过很好的示例得到了几个答案,但是它们仍然存在一些兼容性和性能问题(我希望能够得到纠正)。

现在我发现这样的库已经存在于 JavaScript 中,而且很像 PHP。

我想知道——如果不使用 PHP SPL,将这个库移植到 PHP 上,保持它的风格和外观会很困难吗?

0 投票
1 回答
655 浏览

entity-framework - Linq 包含用于 f# 样式流水线的辅助函数

我想从数据库中急切地加载一些记录及其关系,如下所示:

这很好用,尽管我必须将查询表达式包装在括号中才能在其上调用 include,这看起来有点奇怪。我想知道是否可以编写一个辅助函数来以更惯用的 F# 样式调用 Include,我想出了这个。

现在我的查询看起来像这样(类型推断适用于可查询类型:D)

它编译!但是当我运行它时,我从 DbExtensions 库中得到一个错误,告诉我The Include path expression must refer to a navigation property defined on the type.

在传递给 Queryable.Include 之前检查 lambda 函数,它看起来像这样{<StartupCode$Service>.$Worker.emails@30} Microsoft.FSharp.Core.FSharpFunc<Entities.Email,Entities.QueueItem> {<StartupCode$Service>.$Worker.emails@30}

我想问题与我的 lambda 如何被解释以及FSharpFuncs 和Expression<Func<>>s 之间的转换有关。我尝试重写我的辅助函数,使其具有一个Expression<Func<'a, 'b>>作为第一个参数,甚至下载了 FSharp.Core 源代码以在 Seq 模块和 QueryBuilder 的实现中寻找灵感,但我无法得到任何工作。我尝试重新定义我的辅助函数:

但后来我得到编译器错误This function takes too many arguments, or is used in a context where a function is not expected

我有点难过。任何人都可以建议我如何让这个工作?

0 投票
1 回答
654 浏览

c# - 移动服务查询异常

当我使用通用代码时:

其中TParent:IEnity

我发现了异常:

在“Where”移动服务查询表达式“Convert(prnt).Id”中不支持成员“Id”。

但是,如果我将泛型更改为类型:

我有正常的结果。为什么?我怎样才能使用泛型?