性能方面,在一个相对较大的阵列上(到目前为止,原始阵列的通常计数是±20000),哪种方法最适合过滤它?块或谓词?
包含对象的大多数ivars都是字符串,我想查询它们.
与此问题类似的问题: XPath: select a node based on another node?
目标是根据同级节点的值选择一个节点——在本例中是基于 Pagetype 节点的值的 Pagetitle 节点。
路径:
/dsQueryResponse/Rows/Row/@Title
/dsQueryResponse/Rows/Row/@Pagetype
/dsQueryResponse/Rows/Row/@Pagetitle
Run Code Online (Sandbox Code Playgroud)
这个 xsl 没有返回任何东西:
<xsl:value-of select= "/dsQueryResponse/Rows/Row[Pagetype='Parent']/@Pagetitle" />
Run Code Online (Sandbox Code Playgroud)
示例 xml:
<dsQueryResponse>
<Rows>
<Row>
<Title>1</Title>
<Pagetype>Parent</Pagetype>
<Pagetitle>title of page</Pagetitle>
</Row>
</Rows>
</dsQueryResponse>
Run Code Online (Sandbox Code Playgroud)
目标是返回 Pagetitle 的值,如果它们的 Pagetype 值为“Parent”。
我正在用PROLOG写一个Sudoku-Solver.我希望求解器能够使用所有可能大小的Sudokus,所以我自然需要构造带有可变数量参数的谓词.(例如,在Sudoku中构造"块".)
如何使用可变数量的参数构造或模拟谓词?
这是否可以轻松实现,还是应该添加skip/take作为参数?
public IEnumerable<T> GetKittens<T>(Expression<Func<Kitten, bool>> predicate = null) where T : KittenViewModel, new()
{
var kittenModels = GetModels(); // IQueryable<T>
// how can I make the predicate say 'select the top 10' or
// 'skip 5 and take 5'
kittenModels = kittenModels.Where(predicate);
}
Run Code Online (Sandbox Code Playgroud) 什么是提取具有多种用途的谓词的更简洁方法.方法或类字段?
这两个例子:
1.Class Field
void someMethod() {
IntStream.range(1, 100)
.filter(isOverFifty)
.forEach(System.out::println);
}
private IntPredicate isOverFifty = number -> number > 50;
Run Code Online (Sandbox Code Playgroud)
2.Method
void someMethod() {
IntStream.range(1, 100)
.filter(isOverFifty())
.forEach(System.out::println);
}
private IntPredicate isOverFifty() {
return number -> number > 50;
}
Run Code Online (Sandbox Code Playgroud)
对我来说,现场方式看起来更好一点,但这是正确的方法吗?我有疑虑.
我有一个带有.localConcertsfetched属性的Artist对象(基本上是完整.set的子concerts集),我可以在NSFetchedResultsController谓词中使用该属性吗?
这是我正在尝试的:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Artist" inManagedObjectContext:context];
[request setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"localConcerts.@count > 0"];
[request setPredicate:predicate];
fetchedResultsController = [[NSFetchedResultsController alloc]
initWithFetchRequest:request
managedObjectContext:context
sectionNameKeyPath:nil
cacheName:nil];
Run Code Online (Sandbox Code Playgroud)
但是我得到了:
'keypath localConcerts not found in entity <NSSQLEntity Artist id=1>'
Run Code Online (Sandbox Code Playgroud)
我错过了什么,或者只是不可能在谓词中使用获取的属性?
我有以下方法定义(EDITED删除冗余通用):
public static T SearchAgaistValues<T>(Dictionary<string, string> input,
string key, List<T> values, Predicate<T> match, out string[] cmdParams)
Run Code Online (Sandbox Code Playgroud)
我的简化要求如下.我需要寻找input的key,如果找到,看看它的值出现在values.但是,它values是通用的(显然包含我需要匹配的字符串).因此,我看到它的方式,我必须传递谓词方法来执行匹配.
但是,Predicate<T>我所看到的每个例子都有一个硬编码的比较器.我需要将找到的key's值与每个项目进行比较values.但是,我无法传递这些值.
我无法看到如何使用基于委托的匹配方法在foreach循环之外执行此操作.
我在这里错过了什么吗?
请原谅我,如果我有点不清楚,我刚刚开始使用NHibernate/LINQ/Lambda表达式,我实际上不确定要寻找什么...
我在过去的4到5年里一直在使用.NET 2.0,除了我自己之外没有机会进化,这就是我现在开始学习新技术的原因:)
我一直在阅读很多博客和帖子,并开始了一个个人的小项目,我尝试尽可能地使用Repository模式.
我现在处于以下情况:
我的Repository实现看起来像这样:
public class GenericRepository<T> : IGenericRepository<T> where T : class
{
...
public virtual IQueryable<T> All()
{
IList<T> entities = Session
.CreateCriteria( typeof( T ) )
.List<T>();
return entities.AsQueryable<T>();
}
...
}
Run Code Online (Sandbox Code Playgroud)
所以在我的核心DLL中,我可以获得对我的存储库的引用,并执行以下操作:
IList<Person> people = myRepository.All().ToList();
Run Code Online (Sandbox Code Playgroud)
这看起来效果很好,它查询数据库并返回Person表中的所有行.
但是,现在我想要做的是添加谓词:
IList<Person> daves = myRepository.All().Where(p => p.Name == "Dave").ToList();
Run Code Online (Sandbox Code Playgroud)
这很好,但当然会发生的事情是NHibernate首先查询数据库以返回所有行,然后LINQ过滤结果只返回名称为"Dave"的结果.
我一直在寻找互联网,但我还没有找到如何实现这一点,我发现很多东西似乎已经过时了,例如,我经常看到调用NH session.Linq()方法,我看着我的dll,这种方法无处可寻......
如果有人能指出我正确的方向,也许还有一些例子,我会非常感激.
非常感谢你!
我想对一个集合进行分组,但我不希望聚合包含一些值.这样做的最佳解决方案是什么?
解决方案可能是收集器,filtering(Predicate,Collector)但没有这样的收集器.没有实现自己的收藏家,有没有办法做到这一点?
IntStream.range(0,100).collect(
groupingBy(
i -> i % 3,
HashMap::new,
filtering( i -> i % 2 == 0, toSet() )
)
);
Run Code Online (Sandbox Code Playgroud) 我有一个文件对象List我想根据类型学(音频,视频,照片)或捕获日期/时间或Exif信息(如果是照片)等一些规则进行过滤.我可以用一些例如cicles来做.
有一种聪明的方法吗?我在某地读到解决方案可能是使用Google Guava的Predicates,但我无法理解它是如何工作的.有什么建议吗?谢谢
predicates ×10
c# ×2
.net ×1
android ×1
arrays ×1
c#-4.0 ×1
cocoa ×1
collectors ×1
core-data ×1
delegates ×1
filtering ×1
guava ×1
iphone ×1
java ×1
java-8 ×1
java-stream ×1
linq ×1
list ×1
nhibernate ×1
objective-c ×1
prolog ×1
sharepoint ×1
sudoku ×1
xml ×1
xpath ×1
xslt ×1