使用Linq将列表过滤到相同的列表

时间:2014-01-15 18:56:01

标签: linq

如何使用特定条件过滤相同的列表。我知道使用两个列表。我想用同样的清单来做..

如果我有一个名为lstValues的列表,其名称和计数,我想过滤 所有计数为0的项目。 所以我创建了另一个列表

 lstFilterdedValues.addRange(lstValues.Where(i => i.Count > 0)));

这可行..但我不想使用另一个名为lstFilteredValues的新列表。

我想要像

这样的东西
lstValues =lstValues.Where(i => i.Count > 0)).Select(k=>(k));

但这不起作用。

1 个答案:

答案 0 :(得分:1)

使用ToList()来电:

lstValues = lstValues.Where(i => i.Count > 0).ToList();

它会创建新列表并将其分配回您的lstValues变量。

如果您不想创建新列表并重新分配变量,可以使用List<T>.RemoveAll方法:

lstValues.RemoveAll(i => i.Count <= 0);

正如您所看到的,您必须撤消条件,因为它指定了哪些项目将被删除,而不是哪些项目应保留在列表中。