Indexing 映射/变换中的Distinct()

Indexing 映射/变换中的Distinct(),indexing,mapreduce,distinct,ravendb,Indexing,Mapreduce,Distinct,Ravendb,为了获得特定用户的所有权限,我正在创建以下索引。在转换中,roles.SelectMany(x=>x.Permissions)可能包含重复项,因此我想在其上放置.Distinct()。但是,当我这样做时,它似乎被转换为Raven内部的Enumerable.Distinct(roles.SelectMany(x=>x.Permissions),而不返回任何结果。如果我直接在Raven中更改索引以使用.Distinct(),而不是Enumerable.Distinct(…),它就可以完美地工作 如何

为了获得特定用户的所有权限,我正在创建以下索引。在转换中,
roles.SelectMany(x=>x.Permissions)
可能包含重复项,因此我想在其上放置
.Distinct()
。但是,当我这样做时,它似乎被转换为Raven内部的
Enumerable.Distinct(roles.SelectMany(x=>x.Permissions)
,而不返回任何结果。如果我直接在Raven中更改索引以使用
.Distinct()
,而不是
Enumerable.Distinct(…)
,它就可以完美地工作

如何将其写成Raven中的正确译文

public class PermissionsByUser : AbstractIndexCreationTask<User, UserWithPermissions>
{
    public override string IndexName
    {
        get
        {
            return "Users/PermissionsByUser";
        }
    }
    public PermissionsByUser()
    {
        Map = users => from user in users
                       from role in user.Roles
                       select new {role.Id};

        TransformResults = (database, users) => from user in users
                                                let roles = database.Load<Role>(user.Roles.Select(x => x.Id))
                                                select new
                                                        {
                                                            Id = user.Id,
                                                            Username = user.Username,
                                                            Password = user.Password,
                                                            Roles = user.Roles,
                                                            Permissions = roles.SelectMany(x => x.Permissions)//.Distinct()
                                                        };
    }
}
public类权限用户:AbstractIndexCreationTask
{
公共重写字符串IndexName
{
得到
{
返回“Users/PermissionsByUser”;
}
}
公共许可证Yuser()
{
Map=users=>来自用户中的用户
来自user.Roles中的角色
选择新的{role.Id};
TransformResults=(数据库,用户)=>来自用户中的用户
让roles=database.Load(user.roles.Select(x=>x.Id))
选择新的
{
Id=user.Id,
Username=user.Username,
Password=user.Password,
角色=用户。角色,
Permissions=角色。SelectMany(x=>x.Permissions)/.Distinct()
};
}
}

我认为,这实际上只是一个陈旧结果的问题