标签: predicate

具有多个谓词的OData $过滤器

如果我的模型中有两个实体,"People"和"Addresses",并且一个特定Person有零个或多个地址,通过AddressList导航属性访问,我可以编写一个OData查询来回答以下问题:

"哪个人的姓氏以史密斯结尾,至少有一个地址?"

在我看来,我只能在这里做一个谓词,例如

http:// localhost:55100/DemographicsDataService.svc/People?$ filter = endswith(LastName,'Smith')

(我还不相信我甚至可以写一个$ filter来处理第二个谓词..在这种情况下,假设我试图回答这个问题,"姓氏以史密斯结尾,名字以玛丽开头")

wcf predicate filter odata

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

什么是C++中的谓词?

你能给出一些主题的例子或链接吗?

c++ structure class predicate

35
推荐指数
4
解决办法
5万
查看次数

结合多个谓词

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

假设我有以下代码.

List<string> names = new List<string>();
names.Add("Jacob");
names.Add("Emma");
names.Add("Michael");
names.Add("Isabella");
names.Add("Ethan");
names.Add("Emily");

List<string> filteredNames = names.FindAll(StartsWithE);

static bool StartsWithE(string s)
{
    if (s.StartsWith("E"))
    {
        return true;
    }
    else
    {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

这给了我:

Emma
Ethan
Emily
Run Code Online (Sandbox Code Playgroud)

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

所以我希望能够说出这样的话:

List<string> filteredNames = names.FindAll(StartsWithE OR StartsWithI);
Run Code Online (Sandbox Code Playgroud)

为了得到:

Emma
Isabella
Ethan
Emily
Run Code Online (Sandbox Code Playgroud)

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

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

再次,它需要是一个.NET 2.0解决方案,遗憾的是我不能使用更新版本的框架

非常感谢.

c# predicate .net-2.0

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

C++ remove_if对象的向量

我有一个对象的矢量(顺序很重要)(让我们称之为myobj类),我试图一次删除多个对象.

class vectorList
{

    vector<*myobj> myList; 
};

class myobj
{

    char* myName;
    int index;
    bool m_bMarkedDelete;
}
Run Code Online (Sandbox Code Playgroud)

我认为最好的方法是将特定的myobj对象标记为删除,然后在向量上调用myList.remove_if().但是,我不确定如何使用谓词等.我应该在对象中创建一个成员变量,它允许我说我要删除myobj然后创建一个谓词来检查成员变量是否已设置?

如何将谓词实现为vectorList类的一部分?

c++ stl predicate vector

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

Java接口就像谓词但没有争论

正如标题中所述,我正在寻找一个预先存在的功能界面,Predicate但其test方法不需要参数.如果这样的动物存在,我会很感激参考.

谢谢.

java predicate functional-interface

31
推荐指数
1
解决办法
3220
查看次数

IEnumerable <T>.包含谓词

我只需要澄清给定的集合包含一个元素.

我可以做到这一点,collection.Count(foo => foo.Bar == "Bar") > 0)但它会做不必要的工作 - 迭代整个集合,而我需要在第一次出现时停止.

但我想尝试使用Contains()谓词,例如foo => foo.Bar == "Bar".

目前IEnumerable<T>.Contains有两个签名:

  • IEnumerable<T>.Contains(T)

  • IEnumerable<T>.Contains(T, IEqualityComparer<T>)

所以我必须指定一些变量来检查:

var collection = new List<Foo>() { foo, bar };
collection.Contains(foo);
Run Code Online (Sandbox Code Playgroud)

或写我IEqualityComparer<Foo>将用于反对我的收藏的自定义:

class FooComparer : IEqualityComparer<Foo>
{
    public bool Equals(Foo f1, Foo f2)
    {
        return (f1.Bar == f2.Bar); // my predicate
    }

    public int GetHashCode(Foo f)
    {
        return f.GetHashCode();
    }   
}
Run Code Online (Sandbox Code Playgroud)

那么有没有其他方法可以使用谓词?

c# linq ienumerable predicate contains

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

我使用copy_if错了吗?

我正在使用visual studio 2010,我正在尝试使用std :: copy_if,我想复制所有满足谓词的值.例如:

struct comp
{
    bool operator()(const int i) { return i == 5 || i == 7; }
};

int main()
{
    array<int, 10> arr =  { 3, 2, 5, 7, 3, 5, 6, 7 };
    vector<int> res;
    copy_if(arr.begin(), arr.end(), res.begin(), comp());

    for(int i = 0; i < res.size(); i++)
    {
        cout << res[i] << endl;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此代码时,我得到:向量迭代器不可递增.

c++ predicate

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

我如何否定lambda谓词?

假设我有一串字符串.

final Stream<String> stream = ...;
Run Code Online (Sandbox Code Playgroud)

我想在修剪后过滤掉每个空字符串.

stream
    .filter(Objects::nonNull)
    .map(String::trim)
    .filter(v -> !v.isEmpty());
Run Code Online (Sandbox Code Playgroud)

有没有办法应用Predicate#negate()替换v -> !v.isEmpty()部分?

.filter(((Predicate) String::isEmpty).negate()) // not compile
Run Code Online (Sandbox Code Playgroud)

java lambda predicate java-8

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

Java8中的谓词和函数接口有什么区别?

我知道这可能是一个非常基本的问题,但我想知道Java8中的a PredicateFunction接口有什么区别?

Predicate<String> predicateTest  = (s)-> s.length() > 5;       
System.out.println(predicateTest.test("Predicate"));

Function<String, Boolean> functionTest = str -> str.length()> 5;      
System.out.println(functionTest.apply("Function"));
Run Code Online (Sandbox Code Playgroud)

这里在我的例子中都返回true.唯一的问题是呼叫的方式是不同的?

java predicate function java-8

27
推荐指数
4
解决办法
2316
查看次数

什么是谓词调度

我最近在Clojure上看过很多关于谓词调度的讨论,并想知道这件事是否有什么东西.换句话说,什么是谓词调度,它与通用函数,OOP多态和模式有何不同?谢谢

oop predicate clojure

25
推荐指数
3
解决办法
2527
查看次数