标签: predicate

需要使用DateTime转换的lambda表达式OrderBy

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

例如,典型值可能是"5/12/2009","1/14/2008"等.

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

List<MyObject> orderedList = unorderedList.OrderBy(p => p.Details.Find(s => s.Name == sortColumn).Value).ToList();
Run Code Online (Sandbox Code Playgroud)

有没有办法转换谓词中的值来执行此操作?任何帮助赞赏!

c# linq predicate sql-order-by

4
推荐指数
1
解决办法
9646
查看次数

术语"谓词"的起源是指布尔函数?

在Scheme中,术语"谓词"使用如下:

谓词是一个始终返回布尔值(#t或#f)的过程.

为什么方案使用"谓词"来引用这样的函数?如果用法来自以前的语言,那么首先选择这个术语的动机是什么?

scheme predicate

4
推荐指数
1
解决办法
197
查看次数

Lisp - 如何检查列表是否为点对?

如何检查lisp中的列表是否为点对?

CL-USER 20 : 3 > (dotted-pair-p (cons 1 2))
T

CL-USER 20 : 3 > (dotted-pair-p '(1 2))
NIL

CL-USER 20 : 3 > (dotted-pair-p '(1 2 3))
NIL
Run Code Online (Sandbox Code Playgroud)

我试过检查是否length=2但有错误:

CL-USER 28 : 1 > (= (length (cons 2 3)) 2)
Error: In a call to LENGTH of (2 . 3), tail 3 is not a LIST.
Run Code Online (Sandbox Code Playgroud)

lisp predicate list common-lisp

4
推荐指数
1
解决办法
3710
查看次数

为什么%@在predicateWithFormat和stringWithFormat之间表现不同?

使用predicateWithFormat,%@被""包围.我们需要使用%K作为密钥.

例如[NSPredicate predicateWithFormat @"%@ == %@" ,@"someKey",@"someValue"]变成

"someKey" == "someValue"
Run Code Online (Sandbox Code Playgroud)

在stringWithFormat时,%@不被""包围

[NSString stringWithFormat @"%@ == %@" ,@"someKey",@"someValue"] 
Run Code Online (Sandbox Code Playgroud)

someKey == someValue

为什么不同?

我错过了什么吗?

为什么在predicateWithFormat中使用%@作为"Value",因为它不是string @WithFormat中%@的含义.为什么不创建一个新的表示法,比如说%V来获得"Value"而%@保持值就像在stringWithFormat中一样.

为什么Apple决定使用相同的符号,即%@应该有不同的含义.

他们真的不一样吧?我错过了什么吗?

predicate objective-c stringwithformat

4
推荐指数
1
解决办法
2932
查看次数

在Java 8中创建通用谓词

我是Java 8的新手,想知道是否可以将实例方法传递给另一个方法,而该方法又在lambda参数上调用它:

考虑这个课程:

import java.util.function.Predicate;

public class PredicateTest {

    private class SomeType {

        public boolean bar() {
            return true;
        }

        public boolean foo() {
            return true;
        }
    }

    public void someMethod() {
        Predicate<SomeType> firstPredicate = someType -> someType.bar();
        Predicate<SomeType> secondPredicate = someType -> someType.foo();
        //...
    }

    public Predicate<SomeType> getGenericPredicate(/* ?? what goes here ?? */) {
        Predicate<SomeType> predicate = someType -> someType./* ?? how to call passed instance method foo or bar? */
        return predicate;
    }
}
Run Code Online (Sandbox Code Playgroud)

someMethod()两个谓词 …

java generics lambda predicate java-8

4
推荐指数
1
解决办法
4680
查看次数

类本地作为C++ 11之前的谓词

使用GCC和Clang在使用C++ 11模式构建时,以下代码编译时没有错误/警告.但是,如果我尝试在没有C++ 11模式的情况下编译,并且在第二个范围内发生错误.

#include <algorithm>
#include <vector>

struct astruct
{
   int v;
};

struct astruct_cmp0
{
   bool operator()(const astruct& a0, const astruct& a1) {
     return a0.v < a1.v;
   }
};

int main()
{
   std::vector<astruct> alist;
   {
      // Works - no errors
      std::stable_sort(alist.begin(),alist.end(),astruct_cmp0());
   }

   {
      struct astruct_cmp1
      {
         bool operator()(const astruct& a0, const astruct& a1) {
           return a0.v < a1.v;
         }
      };

      // error: template argument uses local type 'astruct_cmp1'
      std::stable_sort(alist.begin(),alist.end(),astruct_cmp1());
   }

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

我的问题是:允许本地结构定义的C++ 11更改是什么?有人可以请我指出标准中的具体部分(也许是第9.8节)

c++ compiler-errors predicate language-lawyer c++11

4
推荐指数
1
解决办法
145
查看次数

比较谓词

我有一个谓词列表

public List<Func<Album, bool>> Predicates { get; set; }
Run Code Online (Sandbox Code Playgroud)

我想检查列表是否包含特定谓词.

我这样做是:

bool check = Predicates.Contains(x=>x.AlbumName == "Winter");
Run Code Online (Sandbox Code Playgroud)

但即使列表中有这样的谓词,这也总是返回false.我认为这是因为谓词是匿名方法,并且每种方法都是独一无二的,但仍然可以以某种方式比较它们吗?

c# predicate

4
推荐指数
1
解决办法
916
查看次数

在Swift 2中使用Predicate的领域搜索数据库

我在Swift2中编写了一个(Mac)应用程序,它应该搜索具有特定主题的教师的Realm数据库.领域中教师对象的定义如下所示:

class Teacher: Object {
     var subjects = List<Subject>()
}
Run Code Online (Sandbox Code Playgroud)

这个类非常复杂所以我删除了一些行...

这里的函数应该过滤具有特定主题的教师数据库,并仅返回教师姓名(如String Array :) [String]:

func getAllTeacherNamesForSubject(subject: String) -> [String] {
    // Open Database
    let realm = openRealmDatabase()

    // Or open it this way:
    // RLMRealm.setDefaultRealmPath("/Users/name/Data.realm")
    // var realm: Realm!
    // realm = try! Realm()

    // filter the Database with Predicate
    let objects = realm.objects(Teacher).filter("!!! Need Help !!!", subject)
    // How can I filter the Database? I want to get all the Teachers for that subject

    // …
Run Code Online (Sandbox Code Playgroud)

predicate realm swift2

4
推荐指数
1
解决办法
3402
查看次数

我在java 8 lambda Predicate <Integer>上做错了什么?

不是我的问题的重复.我检查它和我是如何利用适当的谓词 THAT约为removeIf和删除之间的差异.

我是Java初学者.
昨天,我试着按照这个教程https://dzone.com/articles/why-we-need-lambda-expressions
在我学会了如何使用Lambda表达式和谓词后,我自己制作了代码来练习.
比如,总和所有数字if(n%3 == 0 || n%5 == 0).这是我的代码.

public class Euler1Lambda {
    long max;
    public Euler1Lambda(long max) {
        this.max = max;
    }
public static boolean div3remainder0(int number) {
    return number % 3 == 0;
}

public static boolean div5remainder0(int number) {
    return number % 5 == 0;
}

public long sumAll() {
    long sum = 0;
    for(int i=1; i<max; i++) {
        if (div3remainder0(i) ||div5remainder0(i)) {
            sum += i;
        }
    }
    return …
Run Code Online (Sandbox Code Playgroud)

java lambda for-loop predicate java-8

4
推荐指数
1
解决办法
428
查看次数

Oracle查询性能:VIEW PUSHED PREDICATE导致对内部查询的多次执行

这与我们面临的涉及表和视图(具有70+百万条记录)的联接的查询所面临的性能问题有关。

在围绕不同环境下的执行计划进行了广泛的分析之后,我可以将其指向其中一个联接的VIEW PUSHED PREDICATE分支。

执行次数(执行计划的“开始”列)等于驱动/外部表上返回的行数-可能是在评估外部结果集上的每个匹配项的视图。

由于此处涉及的表具有数百万条记录,因此%CPU和总体执行时间变得非常糟糕。如果我添加了不推送谓词的提示,则不是这种情况(no_push_pred); 处决只有1。

VIEW PUSHED PREDICATE是否需要此功能,或者我是否对此缺少任何概念?

Oracle数据库版本:12c企业版12.1.0.2.0


我尝试使用简单的查询来模拟问题(或行为)-请在下面查看详细信息。

注意:在此处添加了no_merge提示,以确保Optimizer在联接期间不会合并视图,因此该计划与我的实际查询的计划相同。

查询:

SELECT 
v.STATUS_CODE,
    a1.STATUS_DESC
    FROM STATUS_DETAIL a1,
    (select   /*+ no_merge push_pred */
        a2.STATUS_CODE
          from STATUS a2
             where  a2.STATUS_CODE < 50) v
  where a1.STATUS_CODE = v.STATUS_CODE;
Run Code Online (Sandbox Code Playgroud)

执行计划(使用TABLE(DBMS_XPLAN.display_cursor)提取):

我指的是计划中的3号和4号线-“开始”列的值为70(等于2号线的A-Rows列的值-驱动表访问)

 -----------------------------------------------------------------------------------------------------------------------------------                                                                                                                                                                         
| Id  | Operation               | Name          | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time   | A-Rows |   A-Time   | Buffers |                                                                                                                                                                         
-----------------------------------------------------------------------------------------------------------------------------------                                                                                                                                                                         
|   0 | SELECT STATEMENT        |               |      1 |        |       |   213 (100)|          |     22 |00:00:00.01 …
Run Code Online (Sandbox Code Playgroud)

oracle performance join predicate view

4
推荐指数
1
解决办法
2979
查看次数