问题标签 [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 投票
2 回答
1986 浏览

zend-framework2 - Zend Framework 2 PDO“不喜欢”操作

我需要在哪里进行“不喜欢”操作。我知道我可以这样做:

$predicate->like($a,$b);

但我找不到一种方法来执行“不喜欢”和其他否定的“不喜欢”。有什么办法,否则我将不得不在哪里制作字符串?

谢谢。

0 投票
2 回答
1360 浏览

c# - linq 到实体和存储表达式

我从事对实体使用一些动态 linq 查询的项目。我有大量的案例,为了避免代码重复,我重构了一个方法。但是使用不在 store 表达式中的方法会导致抛出异常。一种解决方案是将方法结果封装成一个表达式,该表达式可由 linq 解释为实体查询。

考虑该代码:

“parentExpression”是我的 EF 的“Parent”类型的谓词。此代码抛出异常,“IsGoodChild”方法返回一个布尔值并且不能被 linq 解释为实体。

所以,我想要这样的东西:

那么,即使不采用 x.child 属性,“IsGoodChild(...)”如何才能工作?谢谢提前


回覆,

我尝试了一些东西,当我直接在这样的表达式中编写 lambda 时:

我使用了 resharper 的提取方法并生成它:

但我也有 .NET Framework 数据提供程序错误 1025' 错误...

0 投票
1 回答
1148 浏览

c# - 实体框架错误:PredicateBuilder 异常并比较空值

我能够让我的方法(如下)在 LinqPad 中运行,但是当切换到我的实际代码(使用实体框架)时,我收到了这个错误:

“无法将类型 'System.Nullable`1' 转换为类型 'System.Object'。LINQ to Entities 仅支持转换 EDM 基元或枚举类型。”

如果我在此处取消注释两个注释行中的任何一个,则会发生错误(实际错误直到方法中的最后一行运行后才会发生):

我相信这是因为manufacturerId 和partNumber 是可以为的小数。问题是这些变量可以为空,我们甚至希望通过它们为空来过滤结果。这只是不适用于 EF,还是有一种优雅的方法来解决这个问题?

编辑

需要明确的是,当manufacturerId 作为null 传入时,使用此行会返回五行(我可以通过查看数据库来验证):

使用这一行,不会返回任何行:

问题是当我传入一个好的制造商 ID 时,我得到了上面的错误。

0 投票
1 回答
963 浏览

c# - PredicateBuilder 返回零记录

我正在使用 PredicateBuilder 创建一个动态 Where 子句来从 DataTable 中查询数据。我有一个字典,其中包含我需要搜索的列名和值。我只是在字典上进行迭代,如果键与列名匹配,则将该键和值添加到谓词中。在对数据表运行实际查询之前,一切似乎都正常,我得到零记录:(但是如果我用 p => p["Year"] == "2010" 之类的东西替换动态谓词,我得到记录回来。这是代码:

任何帮助将不胜感激:)

0 投票
1 回答
1344 浏览

linq - 列表中的Linq部分匹配?

我有一个需要在表中匹配的部分字符串列表。我正在使用 PredicateBuilder。

n.Company = "测试名称"

如果 n.Company 恰好是“测试名称”,这将匹配,但如果我只使用“测试”,则它不匹配。如何匹配 list.Contains 上的部分内容?

0 投票
0 回答
3317 浏览

linq - 使用 linqkit 的动态 LINQ

遵循来自http://www.albahari.com/nutshell/predicatebuilder.aspx的示例

我有一个类似的要求,除了首先我必须进行 AND 查询,其次,与上面的示例不同,我有一堆字段名称和一个要在每个字段中搜索的值。在用户通过之前,字段名称和值都是未知的。我最终做了类似下面的代码,但显然是非常紧密耦合的。

从上面可以看出,Rule 类具有字段和数据属性。理想的情况是,如果我可以动态创建 predicatebuilder ,例如

提前感谢您的任何意见

0 投票
1 回答
3176 浏览

linq - Linq PredicateBuilder,分组和运算符优先级

这是问题的一个例子:

当我在 Watches 中查找这两个表达式时,我看到以下内容:

如果 PredicateBuilder 的行为与默认的 Linq Expression 构建器不同,我发现使用它有点不安全。

现在有几个问题:

1) Linq 为什么要创建这些组?即使我创建一个 Or 表达式

我仍然得到像这样分组的前两个标准:

为什么不只是

?

2) 为什么 PredicateBuilder 添加这些调用?我在默认的 Linq 表达式结果中看不到 Invokes,所以它们似乎没用......

3)有没有其他方法来构造表达式“离线”,然后传递给默认的 Linq 表达式构建器?像这样的东西:

然后 Linq Expression builder 解析它并创建与 x => x.Id == 1 || 相同的表达式 x.Id == 3 && x.Id > 2 (给予 && 更高的优先级)?或者也许我可以调整 PredicateBuilder 来做同样的事情?

0 投票
0 回答
524 浏览

c# - PredicateBuilder 和多级嵌套实体集

我试图围绕动态嵌套谓词表达式。情况不太好。

基本上我需要能够在一组固定的属性上创建动态查询,但在动态(并且可能无限)数量的(嵌套)级别上。

以家谱为例,我应该能够编写查询来获得以下任何一个结果:

  • 找到所有有孩子的父母
  • 查找所有有名字以“k”开头的孩子的父母
  • 查找所有有孩子的父母,他们的孩子出生于 2013 年 1 月 1 日之后,孩子的名字叫“约翰”
  • 等等

我可以手写一些类似的东西,效果很好。

问题是如何在任意数量的嵌套级别上使用混合属性和运算符动态创建上述代码?

0 投票
1 回答
1250 浏览

linq - 使用 PredicateBuilder 有没有办法从可变长度的字段名称列表中构建谓词?

我有一个包含可变数量的字段名称的列表。我想通过这个列表循环并创建一个谓词来过滤所有在字段中具有值的记录。

我不知道该怎么做。有什么建议么?

TIA

0 投票
1 回答
1451 浏览

linq - LINQ:动态谓词构建器问题

我正在尝试创建一个帮助类来轻松构建动态 LINQ 查询。代码是这篇优秀的 CodeProject 文章的大量修改版本:http: //www.codeproject.com/Articles/493917/Dynamic-Querying-with-LINQ-to-Entities-and-Express,这里使用 PredicateBuilder:http:// www.albahari.com/nutshell/predicatebuilder.aspx

我仍在清理代码的过程中,所以变量名称目前是垃圾,而且看不到一条评论。

用法

实体

搜索存储

方法

和有问题的方法

问题是什么?

最后一个方法中被五个星号包围的行是问题所在。

将 OR 分组表达式添加到原始谓词构建器时,您会得到

参数“f”未绑定在指定的 LINQ to Entities 查询表达式中。

出于某种原因,我似乎无法创建嵌套表达式。如果您将代码放在使用示例中执行查询的位置上方,则它可以工作(在制作一些 mod 之后)。

更新解决方案:

带星号的行需要更改为 Return predicate.And(inner.Expand)