用linq修改列表

时间:2018-11-19 16:34:47

标签: c# linq

我正在尝试使用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列表。

1 个答案:

答案 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();