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

c# - PredicateBuilder/LINQ 封装谓词,DI

我开始注意到我的谓词构建代码看起来很相似。这是重构它的标志。让我们看一下代码。

当我需要检查用户是否按下了文章上的“喜欢按钮”时,此代码运行。跟踪我使用的用户

  1. 来自 cookie 的间谍 guid 密钥
  2. IP地址
  3. UserId 如果他已经登录

当我发出 ajax 调用以在数据库中为一篇文章插入“赞投票”时,同样的代码会运行。

所以我想封装它。我的第一个想法是选择扩展方法方法,但我不喜欢它,因为我将不得不求助于 ServiceLocator 模式来获取对此类服务的引用

我觉得那将是一个糟糕的设计,因为它不可测试。我想要一个可重用的类,同时可以由 DI 容器控制。我可以将依赖项注入的类。可能吗 ?

0 投票
1 回答
3114 浏览

linq - PredicateBuilder 无法转换为 IQueryable?

我有一个功能:

现在执行一个 LINQ 查询:

这段代码运行良好。

我需要将其转换为使用PredicateBuilder

奇怪的是,它不能编译。失败的路线是:

您可以选择错误:

  • 实例参数:无法从“System.Collections.Generic.IEnumerable”转换为“System.Linq.IQueryable”
  • “System.Collections.Generic.IEnumerable”不包含“Where”的定义,并且最佳扩展方法重载“System.Linq.Enumerable.Where(System.Collections.Generic.IEnumerable, System.Func)”有一些无效参数
  • 参数 2:无法从 'System.Linq.Expressions.Expression>' 转换为 'System.Func'

有什么问题?IEnumerable进去,IEnumerable出来。

老实说,我阅读了该页面,PredicateBuilder我一点也不明白。


为什么我需要更改为的提示是:PredicateBuilder

...并不是说我需要一个理由、问题、实际例子或研究工作来提出问题。

0 投票
1 回答
961 浏览

vb.net - PredicateBuilder + Join + VB.NET

我有一个包含 3 个表的数据库

我正在使用 PredicateBuilder 根据所选产品字段(数量、产品名称 ...)选择产品 我如何使用 PredicateBuilder 或任何其他方法根据其供应商名称或类别名称选择产品

请我使用 VB.NET 我看到了很多 C# 示例,但我无法理解或翻译它我正在考虑在 predicateBuilder 中使用 join 但我不知道如何!!!!

为了更清楚,我想要的是在一次搜索中组合多个字段,例如:

给我一个名称包含“s”且数量 <10 且供应商名称为 Kimo 的产品

给我一个我的名字只包含“g”的产品

给我类别名称“机器”的产品

.

.

而且这个搜索谓词是可变的,因为每个 Products 表都有很多字段,所以搜索是根据所选字段动态搜索的

等待您的热心帮助。

我认为 Arion 的答案是正确的,但它需要一些修改无论如何我想出了这个解决方案,它不是最有效的一个,但它解决了我的问题。

. . . 案例“供应商”

下一个

For Each it In q With it

那么你认为,有没有更好的方法?当然是的?愚蠢的问题,但是在哪里?

0 投票
2 回答
3382 浏览

linq - 使用 Linq PredicateBuilder 嵌套 OR

我正在使用谓词生成器编写以下代码:

生成的 SQL 看起来像(只是 WHERE 子句):

看起来 id 48 在 SQL 中被分配了两次。不知道为什么?

0 投票
2 回答
1091 浏览

c# - 在 Predicatebuilder 中使用 .Equals() 失败

嗨,我正在使用 Predicate builder 来构建我的 where 子句。我注意到它正在对实体数据源进行区分大小写的比较。一些快速的谷歌搜索暗示这是 linqtoentities 的一个特性。所以我不得不修改我的代码来做

而不是以前做的

现在的问题是它似乎无法建立一个 whereclause。

顺便说一句,我正在使用下面的代码,它之前工作过。

我有执行 foreach 的代码(模型中的 var 项),如果我使用快速视图检查模型,现在将失败,并显示“对象引用未设置为对象的实例”,现在它显示了这个

而不是

无论是否有任何结果,它之前都显示过。

0 投票
1 回答
665 浏览

entity-framework - 使用谓词的实体框架

我正在构建需要使用谓词的搜索。但是,每当我运行以下查询时,我都会继续只获得最后一个谓词的结果。不包括第一个结果。根据我下面的查询,任何人都可以指出我正确的方向。

此查询应该拉回任何具有包含红色的关键字或包含红色的名称或包含蓝色的关键字或包含蓝色的名称的名称的设计。

目前在这种情况下,它会忽略第一个谓词,只返回蓝色值。

谢谢你的帮助,比利

0 投票
1 回答
1811 浏览

predicatebuilder - PredicateBuilder 和 或 或

在我为谓词构建器看到的所有示例中,它显示了一个起始表达式,PredicateBuilder.True如果您正在构建“and”表达式标准,并且PredicateBuilder.False如果您正在构建“or”表达式标准。

我的问题是,是否总是如此,如果是这样,为什么不能简单地推断出来。我怀疑在某些情况下,您正在构建“and”表达式并希望以 false 开头。而“或”的反义词

谁能给我解释一下?

0 投票
1 回答
448 浏览

entity-framework - 使用谓词的实体框架问题

我正在使用谓词来优化搜索选项,当我运行看起来相同的查询时,我得到了两个不同的结果。

这个是正确的,返回预期的结果:(硬编码字符串)

这个只返回第二个谓词“geos”的结果。循环中的第一个(“red”)被忽略。值“red”和“geos”在下面的循环内。

如果这有什么不同,这是查询的其余部分。

问题是如何让第二个谓词列表返回与第一个系列相同的结果。当您传递一个字符串变量而不是硬编码值时,猜测还有一些额外的事情要做。

谢谢,比利

回答:

0 投票
2 回答
3683 浏览

c# - Linq to XML 通过查询子元素获取父元素属性值

我正在尝试构建一个 Linq to XML Query,但还没有找到真正的解决方案。

这是我的 XML

我可用的参数用于 PType 节点和 SType 节点,现在取决于它们的值,我需要获取父节点属性值。

即使使用 PredicateBuilder,我也尝试过不同的解决方案,但没有成功。任何帮助,将不胜感激。

这是我使用 LinqPad 的最新代码。

0 投票
2 回答
3093 浏览

c# - 使用 PredicateBuilder 使用 linq 对实体进行动态查询

我正在尝试在一个非常简单的表上运行查询,但没有得到任何结果。该表包含具有以下列的操作日志:

  • ID
  • ActionTypeID(创建、编辑或删除)
  • EntryID(创建/编辑/删除条目的id)
  • TableName(提交操作的位置)
  • 控件名称
  • 人员(执行该操作的人。具有部门的 nt-user)
  • 日期

我想要得到的是所有 EntryID 的列表,其中 ActionTypeID == 1 和以动态字符串列表之一结尾的 Person(部门)。问题是只应检查操作日志中一个 EntryID 的第一个操作以匹配其中一个部门。

我知道这听起来很奇怪。这可能是由于我的英语不好和我以前的同事的数据库设计障碍造成的。我不知道哪个更糟。

我试图得到我想要的结果是这样的:

但这会将“人员”以所选部门结尾的所有条目返回给我。我只想用这个 EntryID 检查第一个条目。

我希望任何人都能理解我要从困惑的德语翻译成奇怪的英语的内容。

哦-顺便说一句,这是.Net 3.5

编辑 我认为我在找到正确的解释时遇到了一些问题——我会用一些虚拟数据来尝试。

在我的示例中,我将搜索带有“以'/department2'结尾的人创建了第一次出现的新EntryID”、“TableName == 'Contacts'”和“ActionTypeID == 1”的日志条目。我想收到的结果将是(仅 EntryIDs)5,因为这是 Department2 的用户是第一个用户的唯一条目 使用 ActionTypeID 1 插入此 EntryID。我知道这很愚蠢,如果我设计了数据库我不会这样做,但现在我必须处理它。如果要查询的部门数量不是动态的,我将使用以下代码段:

但我不知道如何将那些动态部门与愚蠢的设计联系起来(以及一个条目的多个 ActionTypeID 1(创建)。我什至不知道为什么应用程序会保存这个)

谢谢你,本。