Linq ToLookUp太慢

时间:2018-09-26 17:55:42

标签: c# sql-server linq

如何简化下面的LookUp命令?

我有这样的背景:

var lookup = query.ToLookup(
                i => new { PaisId = i.PaisId, EmpresaId = i.EmpresaId, Codigo = i.Codigo, Nome = i.Nome, OrigemId = i.OrigemId },
                v => new HierarquiaUsuarioSimplesDto { PapelId = v.PapelId, HierarquiaPapelId = v.HierarquiaPapelId, Usuario = new HierarquiaUsuarioDto { Id = v.UsuarioId, Nome = v.UsuarioNome, Matricula = v.UsuarioMatricula, GrupoCargo = v.UsuarioGrupoCargo, GrupoCargoNome = v.GrupoCargoNome } }
            );

        var item = query.FirstOrDefault();

        return new HierarquiaDto
        {
            PaisId = item.PaisId,
            EmpresaId = item.EmpresaId,
            Codigo = item.Codigo,
            Nome = item.Nome,
            OrigemId = item.OrigemId,
            IsPendente = item.IsPendente,
            Usuarios = lookup.FirstOrDefault().ToList()
        };´

query.ToLookup命令非常慢,因为它返回了大量数据。

1 个答案:

答案 0 :(得分:1)

我认为问题是您使用的ToLookUp()错误。 ToLookup用于构建列表的字典。第一个参数用于为输入到字典中的每个列表创建键。

对我来说,您编写的代码看上去与通常使用ToLookUp()所做的事情一样