将代码转换为使用Linq

时间:2009-12-22 11:20:20

标签: linq list

我有以下代码,我想使用Linq,任何可能的??

我有一个用户列表,我需要生成其他列表。

任何帮助?提前谢谢,问候

 SortedList<ClaveUsuarioPersonal, UsuarioRe> users = new SortedList<ClaveUsuarioPersonal, UsuarioRe>();

            if (this.UsuarioRe.UsuarioSar != null)
            {
                foreach (DC.AccesosUsuario var in this.UsuarioRe.UsuarioSar.ListaAccesos)
                {
                    if (var != null && var.Aprobado.Value)
                    {
                        UsuarioRe usuario = UserContextBLL.ObtenerUsuarioRe(var.Login);
                        if(usuario!=null && usuario.UsuarioAire!=null)
                        {
                            if (!usuario.UsuarioAire.Empresa.HasValue)
                            {
                                Log.Trace(Utility.LogCategory, "No existe empresa para el usuario de Aire " + usuario.UsuarioAire.Login);
                            }
                            else
                            {
                                ClaveUsuarioPersonal clave = new ClaveUsuarioPersonal(Convert.ToInt32(usuario.UsuarioAire.Empresa.Value), usuario.UsuarioAire.Login);

                                users.Add(clave, usuario);
                            }
                        }
                    }
                }
            }
            return users;

2 个答案:

答案 0 :(得分:1)

尝试安装Resharper 5.0 Nightly Build。 它有很多功能可以将/ foreach转换为linq语句。对于想要学习LINQ的人来说,这可能会有所帮助。 有关这些功能的更多信息here

编辑:几天前Jetbrains发布了Resharper 5.0 Beta。似乎比夜间建筑更稳定。

答案 1 :(得分:0)

var users = from u in this.UsuarioRe.UsuarioSar.ListaAccesos
            where (UserContextBLL.ObtenerUsuarioRe(u.Login) != null) 
                && (UserContextBLL.ObtenerUsuarioRe(u.Login).UsuarioAire != null)
                && (UserContextBLL.ObtenerUsuarioRe(u.Login).UsuarioAire.Empressa.HasValue)
            select (new ClaveUsuarioPersonal(Convert.ToInt32(UserContextBLL.ObtenerUsuarioRe(u.Login).UsuarioAire.UsuarioAire.Empresa.Value), UserContextBLL.ObtenerUsuarioRe(u.Login).UsuarioAire.Login));

我无法测试这个,因为我没有你的课程。另外我不确定如何在LINQ表达式中实现日志记录功能。它应该会列出你的名单。