0
I need to refactor this method in C#
and replace these 3 foreach with something smaller using LINQ
:
public List<Ponto> Filtrar(IQueryable<Ponto> pontosFiltrados, List<Usuario> usuarios)
{
var pontosFiltradosPorUsuarios = new List<Ponto>();
var cont = 0;
foreach (var ponto in pontosFiltrados)
{
foreach (var usuario in usuarios)
{
foreach (var pontoUsuario in ponto.Usuarios)
{
if (pontoUsuario.Id == usuario.Id)
{
cont++;
}
}
}
if (cont == usuarios.Count && ponto.Usuarios.Count == usuarios.Count)
{
pontosFiltradosPorUsuarios.Add(ponto);
}
cont = 0;
}
return pontosFiltradosPorUsuarios;
}
What this method needs to do is return all points that have exactly the user list passed as argument.
The classes User and Dot are below:
public class Usuario
{
public int Id { get; set; }
}
public class Ponto
{
public string Nome { get; set; }
public int Id { get; set; }
public List<Usuario> Usuarios { get; set; }
}