1
我在RavenDb(不是網站crud)中做了大量的後端數據操作。我有幾十種方法分散執行基本上相同的跳過/查詢,但具有不同的參數。我想要的大部分內容就是:db中與查詢匹配的foreach文檔,請執行此操作。RavenDB ForEach Extension方法抽象
我創建了一個小幫手,但似乎無法弄清楚如何將選擇器應用到它。例如,我的最終目標可能是這樣寫:
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;
}
}
}
}
所以你的'selector'參數可能會被鏈接的各種擴展調用她嗎?或者你會在哪裏和排序? – 2012-04-10 23:46:53
我很想成爲典型的linq調用中有意義的任何東西。例如,.Customize()調用經常用於RavenDb。 – 2012-04-11 03:20:41