如何更改列表的列表项

时间:2016-02-11 08:41:24

标签: c# list

我想改变列表的项目,它们也是列表。

我试过了:

for (int i = pChain.Count -1; i> 0; i --)
{
    List<String> item = pChain[i];
    item = item.RemoveSequentialRepeats().ToList();
}

RemoveSequentialRepeats是静态函数,如:

public static IEnumerable<T> RemoveSequentialRepeats<T>(
     this IEnumerable<T> source) ....

当我跟踪代码时,该函数会更改列表并删除连续重复的项目,但它不会存储在主列表pChain中。我做错了吗?

2 个答案:

答案 0 :(得分:3)

在您的示例中,似乎RemoveSequentialReapeats不会编辑列表,而是创建一个新列表。因此,您要为项目分配新值,并且pChain不会更新并保留原始列表。你应该做的是添加行

pChain[i] = item;

答案 1 :(得分:0)

要解决此问题,您需要将Linq语句的结果分配回pChain

pChain[i] = item;

代码甚至可以简化,并使其成为一个代码。

pChain = pChain.Select(li=> li.Select(item=>item.RemoveSequentialRepeats()).ToList());