我想改变列表的项目,它们也是列表。
我试过了:
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
中。我做错了吗?
答案 0 :(得分:3)
在您的示例中,似乎RemoveSequentialReapeats不会编辑列表,而是创建一个新列表。因此,您要为项目分配新值,并且pChain不会更新并保留原始列表。你应该做的是添加行
pChain[i] = item;
答案 1 :(得分:0)
要解决此问题,您需要将Linq
语句的结果分配回pChain
。
pChain[i] = item;
代码甚至可以简化,并使其成为一个代码。
pChain = pChain.Select(li=> li.Select(item=>item.RemoveSequentialRepeats()).ToList());