我在RavenDb(不是网站crud)中对数据进行了大量的后端数据处理。我有很多方法散布在基本相同的跳过/接受查询,但使用不同的参数。我想要的很多东西很简单:db中匹配此查询的foreach文档,执行此操作。
我创建了一个小助手,但似乎无法弄清楚如何将选择器应用于它。例如,我的最终目标可能是写:
MyDocStore.ForEach<Users>(
x => x.Where(u => u.LastName == "Smith").OrderBy( u => u.FirstName),
x => Console.WriteLine( "{0}", x.FirstName),
take: 12);
这是我到目前为止所做的:
public static class RavenHelper
{
public static void ForEach<TSource>(
this IDocumentStore documentStore,
Func<TSource, IEnumerable<TSource>> selector,
Action<TSource> action,
int take = 128)
{
var skip = 0;
while( true )
{
using( var session = documentStore.OpenSession() )
{
var list = session.Query<TSource>();
// How do I apply more selectors?
var result = list.Take( take ).Skip( skip ).ToList();
if( !result.Any() )
{
return;
}
foreach( var il in result )
{
action(il);
}
skip += take;
}
}
}
}
答案 0 :(得分:2)
你需要:
Expression<Func<TSource, bool>> selector,
然后致电:
.Where(selector)