问题标签 [predicate]

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 投票
5 回答
1399 浏览

.net - 如何根据创建的子类的类型过滤基类中的对象集合?

我写了这个例子来帮助解释。如您所见,我有一个对象层次结构。我想修改 GetFeatures() 函数以仅返回由我实例化的对象类型的构造函数添加的功能。例如,BasicModel.GetFeatures(new LuxuryModel()) 应该只返回特征“Leather Seats”和“Sunroof”。如果必须,我不介意使用反射。

0 投票
1 回答
7006 浏览

sql - 内联视图上的谓词推送如何减慢查询速度?

我继承了一个有点混乱的查询,我正在努力重构以提高性能。

在此过程中,由于个人喜好,我所做的一件事是将所有 ANSI-99 连接语法从“内连接”和“左外连接”语句更改为查询中的谓词。我注意到两件非常奇怪的事情,我希望能得到解释。

  1. 从“INNER JOIN...”语法更改联接已更改解释计划。使用 ANSI 99 语法,oracle 对正在连接的列进行全表扫描。更改连接语法后,它现在执行谓词推送。为什么连接语法会改变解释计划?
  2. 推入内联视图的谓词实际上大大减慢了查询速度。正在运行的查询(在更改连接之前)大约 3 秒。现在需要 9 秒。老实说,我对阅读解释计划相当陌生,因此查询的重组完全有可能由于不同的原因而减慢了速度。但最终我的问题是:“推索引列的谓词是否有可能大幅减慢查询速度?如果是,为什么?”

感谢您的回复,如果这不是很清楚,我很抱歉...

0 投票
2 回答
13232 浏览

c++ - 将一元谓词传递给 C++ 中的函数

我需要一个函数来为我的班级建立一个显示项目的策略。例如:

这是假设 BOOLEAN_PRED_T 是指向某些布尔谓词类型的函数指针,例如:

我只对例如感兴趣:当传递的谓词为真时显示某些内容,当它为假时不显示。

上面的示例适用于返回 bool 并采用 int 的函数,但我需要一个非常通用的 SetDisplayPolicy 参数指针,所以我想到了 UnaryPredicate,但它与 boost 相关。如何将一元谓词传递给 STL/C++ 中的函数?unary_function< bool,T >不起作用,因为我需要一个 bool 作为返回值,但我想以最通用的方法向用户询问“返回 bool 的一元函数”。

我想将我自己的类型派生为:

这会是一个好方法吗?

0 投票
1 回答
167 浏览

c# - 如何让对象“假设”它们为操作员 X 过载?

有没有办法强制 C# 编译器忽略缺少的对象运算符重载,而是在运行时处理该检查?我问是因为我有一个容器,其中包含多个对象,这些对象具有 int、string、ushort 等类型的各种属性。我正在为该容器创建搜索功能,并希望能够搜索各个字段。

我正在使用谓词和 lambda 表达式。

这就是我要的:

假设 ID 和 Date 是容器对象中的字段

这就是我今天必须做的(虽然它有效):

与第一个示例相比,额外的铸件看起来不是很好,我不想这样做。我希望可以选择在运行时检查它。

有没有办法做到这一点?

0 投票
2 回答
10027 浏览

c# - 需要带有 DateTime 转换的 lambda 表达式 OrderBy

我正在尝试创建一个 lambda 表达式(Linq,C# 3.5),它可以对数据类型 String 但实际上包含可解析的 DateTime 的值执行 OrderBy。

例如,典型值可能是“5/12/2009”、“1/14/2008”等。

下面的 OrderBy 子句可以正确地进行排序(就像字符串数据一样),但我实际上想将值视为 DateTimes,并按 Date 执行排序。(sortColumn 类似于“dateCreated”。)

有没有办法转换谓词中的值来做到这一点?任何帮助表示赞赏!

0 投票
3 回答
35770 浏览

c# - 如何转换表达式> 到谓词

我有一个接受Expression<Func<T, bool>>作为参数的方法。我想将它用作 List.Find() 方法中的谓词,但我似乎无法将其转换为 List 采用的谓词。你知道一个简单的方法来做到这一点吗?

更新

结合 tvanfosson 和 280Z28 的答案,我现在使用这个:

0 投票
3 回答
1884 浏览

asp.net - Linq to Sql - 只选择某些信息(w/ Predicate Builder)

我正在将 Linq to Sql 与 Predicate Builder 一起使用,并试图优化从数据库中检索到的信息量。我想只选择某些字段以在网格视图中显示它们。当我只选择我想要的内容时,我添加的搜索参数(见下文)不起作用,PredicateBuilder 也不起作用。这就是我目前正在做的事情(有效,但得到的信息太多了)

如果我将其更改为仅选择我需要的内容,如下所示:

然后我注意到如果选择了信息(即我选择 p.SomeAttribute),那么我可以在该属性上搜索(添加 where 子句),但如果没有,我不能。并且使用谓词构建器,它仅在我选择整个项目(即选择 p)时才有效。所有这一切都应该做的是创建不必选择要搜索的属性的 SQL 语句。我怎样才能让它工作并只选择我需要的东西,但是搜索任何东西并保持prediate builder工作?非常感谢任何帮助!谢谢

0 投票
3 回答
3239 浏览

c# - 谓词和 lambda 表达式

我最近搬到了 .net 3.0(Windows 窗体,C#)。我想了解更多关于谓词和 lambda 表达式的信息。我们应该在哪里使用它们?他们提高了性能吗?以及它们如何在内部工作。谢谢。

0 投票
7 回答
33409 浏览

c# - 组合多个谓词

c# .NET 2.0 有什么办法!组合多个谓词?

假设我有以下代码。

这给了我:

所以这是很酷的东西,但我知道希望能够使用多个谓词进行过滤。

所以我希望能够这样说:

为了得到:

我怎样才能做到这一点?目前我只是对完整列表进行两次过滤,然后再组合结果。但不幸的是,这是非常低效的,更重要的是我丢失了原始排序顺序,这在我的情况下是不可接受的。

我还需要能够迭代任意数量的过滤器/谓词,因为可能有很多。

同样,它需要是 .NET 2.0 解决方案,不幸的是我不能使用更新版本的框架

非常感谢。

0 投票
2 回答
975 浏览

c# - 封装谓词的模式/实践

我猜我们大多数人都必须在某个时候处理这​​个问题,所以我想我会问这个问题。

当你的 BLL 中有很多集合并且你发现你一遍又一遍地编写相同的旧内联(匿名)谓词时,显然有一个封装的情况,但实现这一目标的最佳方法是什么?

我目前正在从事的项目采用古老的、回答所有的、静态类方法(例如 User 类和静态 UserPredicates 类),但这似乎有点笨拙,有点逃避。

我主要在 C# 中工作,所以保持这种情况最有帮助,但我认为这是一个足够通用的问题,足以保证听到其他语言。

此外,我预计随着 LINQ 和 Lambdas 的出现如何实现这一点会有所不同,所以我很想知道如何在 .Net2.0 和 3.0/3.5 样式中实现这一点。

提前致谢。