1

我想获取按属性(字符串)为空或为空的用户列表。

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

public class Users_Contributors : AbstractIndexCreationTask<User>
{
    public Users_Contributors()
    {
        Map = users => from user in users
                       where user.ContributionDescription != null && user.ContributionDescription != "" 
                       select new {};
    }
}

所以我只想让 raven 为我“准备”用户列表。我只是要在查询时从该索引中取出所有用户对象,而无需额外的过滤/位置条件。

上面的代码是要走的路还是我可以以更好的方式实现相同的目标?我觉得我在这里错过了一些东西。谢谢!

4

1 回答 1

2

这将工作得很好。结果将是索引仅包含在其ContributionDescription字段中具有某些内容的用户。

如果你想让它更容易阅读,你可以使用string.IsNullOrEmpty,但这不会对性能产生任何影响。

Map = users => from user in users
               where !string.IsNullOrEmpty(user.ContributionDescription)
               select new {};

由于末尾的空对象,它可能感觉很奇怪,但这只是定义了索引条目。如果您不按任何其他字段进行排序或过滤,那么使用空对象就可以了。请记住,__document_id无论您映射什么字段,都会创建条目。

于 2013-04-19T16:21:23.597 回答