映射/变换中的 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()
                                                        };
    }
}

我认为,这实际上只是一个过时的结果问题。回答 https://groups.google.com/forum/?fromgroups#!topic/ravendb/0hO8TOQicwc

相关内容

  • 没有找到相关文章

最新更新