我有以下代码,我想使用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;
答案 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表达式中实现日志记录功能。它应该会列出你的名单。