我需要的是简单地检索存储在产品中的类别列表:
Products.Select(x => x.Category).Distinct().OrderBy(x => x);
调用此RavenDB
时,我应该使用索引而不是在查询期间不允许进行计算。
我已经阅读了一些有关索引的内容,但仍然无法弄清楚我是如何创建索引的?
到目前为止我尝试的是:
初始化
public class DataAccessModule : NinjectModule {
public override void Load() {
Bind<IDocumentStore>().ToMethod(
context => {
var documentStore = new EmbeddableDocumentStore {
DataDirectory = @"~/App_Data/database",
UseEmbeddedHttpServer = true,
DefaultDatabase = "SampleStore"
};
var store = documentStore.Initialize();
IndexCreation.CreateIndexes(typeof(CategoriesIndex).Assembly, store);
return store;
}
).InSingletonScope();
Bind<IDocumentSession>().ToMethod(context =>
context.Kernel.Get<IDocumentStore>().OpenSession()
).InRequestScope();
}
}
索引定义
public class CategoriesIndex : AbstractIndexCreationTask<Product> {
public CategoriesIndex() {
Map = ct => ct.Select(x => x.Categories).Distinct().OrderBy(x => x);
}
}
但这不起作用。 我怎么用正确的方式定义它?
谢谢!
答案 0 :(得分:3)
您可以使用以下方式执行此操作:
var categories = Session.Query<Product>()
.Select(x => x.Category).Distinct().ToList().OrderBy(x=>x);
这会给你你想要的东西。