如何将RavenDB索引编写为预筛选的文档列表,而不是可搜索的

如何将RavenDB索引编写为预筛选的文档列表,而不是可搜索的,ravendb,Ravendb,我想获得一个按null或空属性(字符串)筛选的用户列表 我已经为此创建了一个索引,但我不确定我的实现方法是否正确 public class Users_Contributors : AbstractIndexCreationTask<User> { public Users_Contributors() { Map = users => from user in users where user.Co

我想获得一个按null或空属性(字符串)筛选的用户列表

我已经为此创建了一个索引,但我不确定我的实现方法是否正确

public class Users_Contributors : AbstractIndexCreationTask<User>
{
    public Users_Contributors()
    {
        Map = users => from user in users
                       where user.ContributionDescription != null && user.ContributionDescription != "" 
                       select new {};
    }
}
公共类用户\u贡献者:AbstractIndexCreationTask
{
公共用户(贡献者)
{
Map=users=>来自用户中的用户
其中user.ContributionDescription!=null&&user.ContributionDescription!=“”
选择新{};
}
}
所以我只想raven为我“准备”用户列表。我只是将所有用户对象从该索引中取出,而无需在查询时使用额外的筛选/where标准


上面的代码是正确的吗?或者我可以用更好的方法实现同样的功能吗?我觉得我错过了一些东西。谢谢

这样就行了。结果是索引只包含在其
ContributionDescription
字段中有内容的用户

如果您想使其更易于阅读,可以使用
string.IsNullOrEmpty
,但这不会对性能产生任何影响

Map = users => from user in users
               where !string.IsNullOrEmpty(user.ContributionDescription)
               select new {};
这可能感觉很奇怪,因为结尾的对象是空的,但这只是定义了索引项。如果您不按任何其他字段进行排序或过滤,那么使用空对象就可以了。请记住,无论映射哪些字段,都会创建
\u document\u id
条目