我正在尝试使用linq过滤列表,问题是当使用linq过滤列表时,它仅返回过滤器的结果,并且我正在寻找一种修改列表而不是获取结果的方法过滤器,因为我是在foreach上执行的。
这是我正在做的foreach:
foreach(Filtro f in filtros)
{
if(f.Activo)
{
switch(f.TipoFiltro)
{
case TipoFiltro.nombre:
jugadoresFiltrados.Where(j => j.Nombre.Contains(f.ContenidoFiltro));
break;
case TipoFiltro.equipo:
jugadoresFiltrados.Where(j => j.EquipoJugador.Contains(f.ContenidoFiltro));
break;
case TipoFiltro.mundial:
break;
}
}
}
这不起作用,因为我没有修改jugadoresFiltrados列表。
答案 0 :(得分:2)
Where返回过滤的列表,它不会更改集合:
返回一个IEnumerable,该IEnumerable包含输入序列中满足条件的元素。
因此,您需要将过滤后的列表分配回集合,例如:
jugadoresFiltrados = jugadoresFiltrados.Where(j => j.Nombre.Contains(f.ContenidoFiltro));
如果jugadoresFiltrados
是列表,则还需要调用ToList():
jugadoresFiltrados = jugadoresFiltrados.Where(j => j.Nombre.Contains(f.ContenidoFiltro)).ToList();