标签: predicate

使用带有函数的C#Count()

我试图通过使用带有谓词的Linq来计算出数组在阵列中出现的最大值的次数.Count().但是,我不完全明白该怎么做.从阅读MSDN的例子我认为我理解,但显然不是!

这就是我的想法:

string[] test = { "1", "2", "3", "4", "4" };
string max = test.Max();
Label1.Text = test.Count(p => p == max);
Run Code Online (Sandbox Code Playgroud)

但那没用.所以我尝试将max更改为整数以查看是否可行,但这也不起作用.

c# linq predicate max

6
推荐指数
2
解决办法
2万
查看次数

是否有用于将谓词定义为类似SQL的字符串的Java库?

Lambdaj(以及其他一些类似的库)提供了一个having函数,它允许我像这样定义谓词(例如直接来自lambdaj Features页面):

List<Person> oldFriends = 
    filter(having(on(Person.class).getAge(), greaterThan(30)), meAndMyFriends);
Run Code Online (Sandbox Code Playgroud)

我非常希望能够使用简单的字符串语法定义我的Java谓词对象"age > 30"- 类似于SQL where子句 - 所以上面的过滤器变成了类似的东西:

List<Person> oldFriends = 
    filter(having(Person.class, "age > 30"), meAndMyFriends);
Run Code Online (Sandbox Code Playgroud)

这样的库是否存在,或者是否有人可以为我自己构建一个查询解析部分推荐一些构建块?我实际上并不介意它创造了什么样的谓词(hamcrest,guava等).

在我的头脑中,我可以想到它支持的许多事情:平等和不平等,自定义和原始类型,和/或/不,括号,LIKE(对于字符串),in(...)enum的解释名称,属性的属性.

这是一个更复杂的谓词的例子:

"salesCount > 10 and (country='UK' or city='New York')
and attitude not in (MENACING, RUDE)
and product.name <> 'Widget' "
Run Code Online (Sandbox Code Playgroud)

(此示例假定谓词应用于的SalesPerson类(比如一个类)具有方法getSalesCount(),getCountry()和getCity(),以及getAttitude()(返回枚举).它还具有属性getProduct,返回带有getName方法的类型.

动机:我们有一个客户端 - 服务器系统,它有多种语言API(目前是Java和C#); 我正在寻找一种语言无关的方式让用户指定一个谓词,该谓词过滤一组对象,其中的确切内容只有服务器进程知道(用Java编写).

java sql predicate el lambdaj

6
推荐指数
1
解决办法
2219
查看次数

Java:如何使用大量谓词过滤大量对象?

在Java中,我有一大堆对象(~10,000个对象),比方说Set<Person> cityInhabitants.我还有一个大的谓词集合(~1,000个谓词),它们将用于过滤掉任何Person匹配的谓词.例如,谓词可能是

  • person.getName().equals("ugly name1")
  • person.getName().equals("ugly name2")
  • person.getAge() < 18.

此要求需要以下挑战:

  • 过滤应该很快
  • 谓词是"业务定义的",因此添加和删除谓词应该很容易.这意味着谓词可能不应该在源代码中进行硬编码,但最好在数据库中维护(?)

这些挑战有哪些解决方案?有没有可以帮助的图书馆?

java collections predicate

6
推荐指数
1
解决办法
1476
查看次数

结合+和PredredWithSubpredicates:和+ orPredicateWithSubpredicates:在一个谓词中

我想用下一个subpredicates设置复合谓词:

  • id(AND类型)
  • 名字(或类型)
  • 姓氏(或类型)
  • 中间名(或类型)

我读NSCompoundPredicate文档,但不理解不够清晰-这可能在所有使用都+ andPredicateWithSubpredicates:+ orPredicateWithSubpredicates:他们在一个组合成一个谓语获取请求?

predicate objective-c nspredicate nsfetchedresultscontroller

6
推荐指数
1
解决办法
2657
查看次数

逻辑真的 C++ 一元函数

我正在尝试在 bool 向量上使用 any_of 函数。any_of 函数需要一个返回布尔值的一元谓词函数。但是,当输入到函数中的值已经是我想要的 bool 时,我无法弄清楚要使用什么。我会猜测一些函数名称,如“logical_true”或“istrue”或“if”,但这些似乎都不起作用。我在下面粘贴了一些代码以显示我正在尝试做什么。提前感谢您的任何想法。 - 克里斯

// Example use of any_of function.

#include <algorithm>
#include <functional>
#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char *argv[]) {
    vector<bool>testVec(2);

    testVec[0] = true;
    testVec[1] = false;

    bool anyValid;

    anyValid = std::find(testVec.begin(), testVec.end(), true) != testVec.end(); // Without C++0x
    // anyValid = !std::all_of(testVec.begin(), testVec.end(), std::logical_not<bool>()); // Workaround uses logical_not
    // anyValid = std::any_of(testVec.begin(), testVec.end(), std::logical_true<bool>()); // No such thing as logical_true

    cout << "anyValid = " << …
Run Code Online (Sandbox Code Playgroud)

c++ stl boolean predicate unary-operator

6
推荐指数
2
解决办法
2858
查看次数

如何使用谓词过滤子实体集合?

我有一个实体服务,我需要根据id的列表过滤子实体的集合.我的服务有一个公共方法,它接收父实体的id和他的一些子实体的id列表.

默认情况下,我知道JPA将获取所有相关实体,这是他的实际行为.但我们需要研究服务的性能.因此,我没有获得所有相关实体并使用多个循环过滤它们(过滤id和其他属性,如date属性),我想只得到我的请求所关注的实体.

我的父实体

@Entity
@Table(name = "MyParent")
public class MyParentEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, 
        generator = "SEQ_MyParent")
    @SequenceGenerator(allocationSize = 1, name = "SEQ_MyParent", 
        sequenceName = "SEQ_MyParent")
    @Column(name = "ID_PARENT")
    private Long id;

    @OneToMany(mappedBy = "myParent", cascade = CascadeType.ALL, 
        fetch = FetchType.EAGER, orphanRemoval = true)
    private final List<MyChildEntity> myChild = new ArrayList<MyChildEntity>();

}
Run Code Online (Sandbox Code Playgroud)

我的孩子实体

@Entity
@Table(name = "MyChild")
public class MyChildEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, 
        generator = "SEQ_MyChild")
    @SequenceGenerator(allocationSize = 1, name = "SEQ_MyChild", 
        sequenceName = "SEQ_MyChild")
    @Column(name = …
Run Code Online (Sandbox Code Playgroud)

jpa predicate criteria-api spring-data

6
推荐指数
1
解决办法
9492
查看次数

Spring Data + QueryDSL空谓词+谓词链接

让我直截了当.我在一个项目中使用Spring Data JPA和QueryDSL,我自己也无法弄清楚这一点.

我在静态方法中有QueryDSL谓词可以接受参数,如果参数不正确,它应该返回"空谓词":

public static BooleanExpression byWhateverId(Long whateverId) {
  if(whateverId == null) return [insert magic here];
  // if parameter is OK return usual predicate
  return QClass.property.whateverId.eq(whateverId);
}
Run Code Online (Sandbox Code Playgroud)

现在我希望能够使用AND/OR操作符链接这些谓词:

someRepository.findAll(byWhateverId(someParam).and(bySomethingElseId(1));
Run Code Online (Sandbox Code Playgroud)

这里的问题是,此时我不知道'someParam'是否为空(当然我可以查看,但那是很多IF).我也知道我可以使用BooleanBuilder类,但这看起来也像很多不需要的代码.

有谁知道可以插入什么而不是"[在这里插入魔法]"??? 或者也许我在某处丢失某些东西......

谢谢!

spring predicate querydsl

6
推荐指数
3
解决办法
7883
查看次数

R - 计算每列中某些值的数量

我发现了与我类似的问题,但没有一个解释如何为数据框的每一列执行此操作。

我有一个这样的数据框:

x1 = seq(12, 200, length=20)
x2 = seq(50, 120, length=20)
x3 = seq(40, 250, length=20)
x4 = seq(100,130, length=20)
x5 = seq(10, 300, length=20) 

df = data.frame(V1=x1, V2=x2, V3=x3, V4=x4, V5=x5) 
Run Code Online (Sandbox Code Playgroud)

现在我想获取每列大于 120 的值的数量。

我试过了:

nrow(df[,1] >120)
Run Code Online (Sandbox Code Playgroud)

那没有用,它说 0,但它不是真的,而且我想自动完成所有列。

row r predicate aggregate-functions dataframe

6
推荐指数
1
解决办法
2万
查看次数

JAVA 8 Stream 过滤器使用 Predicate 获取最新记录

我有一个布尔类型的方法,它返回谓词类型事件的数据流,我只想过滤掉最新的事件。

public boolean hascompletededucation(LocalDate asOnDate) {
        Predicate<Courses> predicate = e -> ((e.hasincident1(asOnDate));
        return f != null && f.stream().anyMatch(predicate);         
Run Code Online (Sandbox Code Playgroud)

我试过

return f != null && f.stream().filter(predicate)
Run Code Online (Sandbox Code Playgroud)

有点像这样,但我想从方法 hasincident1 中获取最新事件。

方法 hasincident1 如下:

public boolean hasincident1(LocalDate asOnDate) {
        Predicate<Incident> completeincident= e -> !e.isCancelled() && e.isCompleted()
                && (e.getDate().toLocalDate().isBefore(asOnDate)
                        || e.getDateIncident().toLocalDate().isEqual(asOnDate));
        return incidentList != null && incidentList.stream().anyMatch(completeincident);
    }
Run Code Online (Sandbox Code Playgroud)

java lambda predicate java-8 java-stream

6
推荐指数
1
解决办法
469
查看次数

如何获取 javascript 数组中与谓词匹配的元素计数?

假设我们想要计算NaNjavascript 数组中的 。我们可以用

let arr = [...Array(100)].map( (a,i) => i %10==0 ?  NaN : i )
console.log(arr)

> [NaN, 1, 2, 3, 4, 5, 6, 7, 8, 9, NaN, 11, 12, 13, 14, 15, 16, 17, 18, 19, NaN, 21, 22, 23, 24, 25, 26, 27, 28, 29, NaN, 31, 32, 33, 34, 35, 36, 37, 38, 39, NaN, 41, 42, 43, 44, 45, 46, 47, 48, 49, NaN, 51, 52, 53, 54, 55, 56, 57, 58, 59, …
Run Code Online (Sandbox Code Playgroud)

javascript arrays predicate

6
推荐指数
2
解决办法
1900
查看次数