问题标签 [predicatebuilder]

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 投票
1 回答
220 浏览

mysql - 带有谓词生成器的 MySQL 不起作用?

我正在开发基于 3 个字段的小型过滤器。我还在我的 MVC 3 项目中使用 MySQL 连接器。

我找到了一个漂亮的 PredicateBuilder http://www.albahari.com/nutshell/predicatebuilder.aspx。但它似乎不适用于 MySQL

result包含 0 个元素。为什么 ?

0 投票
2 回答
897 浏览

lucene - RavenDB 和 PredicateBuilder

是否可以使用 PredicateBuilder 类来构建 RavenDB 可以解释和使用的 WHERE 子句?我尝试过 session.Query() 和 LuceneQuery,但它们都失败了:

这是 session.Query() 尝试:

这是运行时错误:

Lucene.Net.QueryParsers.ParseException:无法解析'(OR)OR':在第1行第2列遇到“”OR“”。期待以下之一:(此处的预期项目列表)。

如果我尝试 LuceneQuery():

我得到这个编译时错误:

错误 2 'Raven.Client.IDocumentQueryBase>.Where(System.Func)' 已过时:'您不能在 IDocumentQuery 上发出内存过滤器 - 例如 Where(x=>x.Name == "Ayende")。

编辑:这是第一个示例中 whereClause 的样子:

{f => ((False OrElse Invoke(x => (Convert(x).EquipmentId == value(ReadFromRaven.Logic.Readers.RavenReader 1+<>c__DisplayClassa[WriteToRaven.Data.Marker]).tempCoater.MarkerEquipmentId), f)) OrElse Invoke(x => (Convert(x).EquipmentId == value(ReadFromRaven.Logic.Readers.RavenReader1+<>c__DisplayClassa[WriteToRaven.Data.Marker]).tempCoater.MarkerEquipmentId), F))}

编辑 2:这就是我构建 WHERE 子句的方式

这是电话:

这是 BuildWhereClause() 方法签名和重要的方法部分:

0 投票
1 回答
935 浏览

c# - PredicateBuilder 可重用的 DateTime 谓词设置器

我正在使用PredicateBuilder生成动态搜索子句。在下面的示例代码中,有没有一种方法可以修改SetDateTimePredicate,以便将其用于任何DateTime属性SomeType

我尝试了一种扩展方法,但得到了这个错误:

扩展方法:

带有扩展方法的示例:

0 投票
1 回答
753 浏览

c# - MVC 3 中的谓词生成器

我已经用 Predicate Builder 搞砸了两天了,尽管每个网站都说由于某种原因它非常容易实现(很可能是我的错),但我无法让它工作。我决定使用谓词生成器,因为我知道我想搜索哪些列,并且它们都在同一个表中。我要做的就是在多个列中搜索可能存在于 3 列中的任何一个中的关键字。我读过 Predicate Builder 可以轻松完成此操作,但教程显然没有考虑到我。以下是我到目前为止所拥有的,如果有人能指出我正确的方向,我将不胜感激。现在当我搜索时它什么也没做,它只是返回所有记录。谢谢你的帮助!

0 投票
1 回答
1226 浏览

entity-framework-4 - 无法使用 LINQ to Entities 和 LinqKit / PredicateBuilder 重构

我一直在尝试将 LINQ 表达式重构为方法,并且遇到了“ Internal .NET Framework Data Provider error 1025.”和“ The parameter 'xyz' was not bound in the specified LINQ to Entities query expression.”异常。

以下是实体模型的相关部分(使用 EF 4.2 / LINQ to Entities):

基本的关系模型是这样的:

我正在尝试创建一个查询,当给定 search 时,它将term尝试查找以OR开头的Place实体,其具有who或以 search 开头。(不是我遇到问题的地方,尽管它是查询的一部分,因为s 应该只匹配。)OfficialNametermPlaceNameTextAsciiEquivalenttermLanguagePlaceNameCultureInfo.CurrentUICulture.TwoLetterIsoLanguageName

以下代码确实有效

我接下来要做的是重构NonOfficialNameMatches方法以将name => ...表达式提取到单独的方法中,以便其他查询可以重用它。这是我尝试过的一个示例,它不起作用并引发异常“ The parameter 'place' was not bound in the specified LINQ to Entities query expression.”:

当我没有.AsExpandable()链时NonOfficialNameMatches,我会得到“ Internal .NET Framework Data Provider error 1025.”异常。

我在这里遵循了其他建议,例如调用.Expand()谓词的几种组合,但总是以上述异常之一结束。

甚至可以使用带有 LinqKit / PredicateBuilder 的 LINQ to Entities 将此表达式分解为单独的方法吗?如果是这样,怎么做?我究竟做错了什么?

0 投票
1 回答
441 浏览

predicatebuilder - PredicateBuilder where 子句问题

我正在使用 PredicateBuilder 生成 where 子句

我收到以下错误,任何人都可以为此提供帮助,或者我做错了什么。

实例参数:无法从“System.Data.Linq.EntitySet”转换为“System.Linq.IQueryable”

0 投票
1 回答
1674 浏览

linq - Linq PredicateBuilder 多条件

如何 PredicateBuilder 多标准?

0 投票
1 回答
185 浏览

linq - 使用 PredicateBuilder 创建一个独立的布尔表达式

我试图弄清楚如何使用 PredicateBuilder 来确定一组特定的记录是否全部存在于一个表达式中。因此,给定一个 OrderId 和一个 ProductIds 列表作为规范,我想知道 Order 的 OrderDetail 记录是否包含所有规范项。不只是其中一个或一些——而是所有这些。

所以我可以这样做:

但是,在得到结果之后,我必须 a) 消除重复项(因为在我的情况下,多个 OrderDetails 可以具有相同的 ProductId),然后 b) 将结果计数与规范计数进行比较。所有这些在表达式之外都是可行的,但是有没有一种优雅的方法来评估表达式中的所有内容,使得结果是布尔值?

也就是说,我希望表达式是自包含的,以便它可以按原样传递,而我给它的那些不必知道如何进行“后期处理”来确定它是否真实.

0 投票
0 回答
820 浏览

c# - 如何简化 LINQ to WCF 数据服务中的组合谓词?

我正在使用PredicateBuilderColin Meek 的等价物以 WCF 数据服务友好(即没有调用表达式等)的方式编写谓词。这些适用于某些查询,但随着查询复杂性的增加,“递归达到允许的限制”失败。不幸的是,这个限制低于我在代码中正常情况下的预期。我也无法事先确定何时达到此限制。

有可能:

  • 在访问 WCF 数据服务之前简化谓词?
  • 确定查询复杂性何时超过 WCF 数据服务的限制?

在我的代码中,我正在为接受“州”和“城市”参数的 Azure 数据市场服务构建谓词。我没有为每个城市*州配对发出调用,而是按照以下方式编写谓词:

由于表达式树,实际上谓词会更像这样:

使用 LINQPad,我可以捕获请求,手动简化它并证明这些工作一旦简化。因为我的代码没有尝试简化,所以命中 Azure 数据服务的 OData 查询过于复杂/递归并生成异常。在上面的概述中,我应用了诸如 (x 或 y) 或 z == x 或 y 或 z 之类的简化,这具有充分降低查询复杂性以使其通过集合的效果。因此我上面的两个问题。

任何帮助/指针将不胜感激!

0 投票
1 回答
425 浏览

c# - 即使添加了明确的错误语句,PredicateBuilder 仍然为真

我有以下声明。

起初,我在尝试一种表达方式;没有成功,所以我尝试了这个“假”。不管我做了什么,它仍然是一样的。怎么了?