C# 链表问题

C# 链表问题,c#,linked-list,C#,Linked List,我想创建一个包含一些人的姓名、年龄和地址的链接列表,到目前为止,我创建了以下代码: LinkedList<string> details = new LinkedList<string>(); details.AddFirst("Name1"); details.AddLast("Name2"); details.AddLast("Name3"); foreach (var display in details) {

我想创建一个包含一些人的姓名、年龄和地址的链接列表,到目前为止,我创建了以下代码:

    LinkedList<string> details = new LinkedList<string>();

    details.AddFirst("Name1");
    details.AddLast("Name2");
    details.AddLast("Name3");

    foreach (var display in details)
    {
        Console.WriteLine(display);
    }
但我有一个错误:

Unhandled Exception: System.InvalidOperationException: Collection was modified after the enumerator was instantiated.

最后,我如何编辑linkedlist项目,比如将Name2重命名为Name13或其他任何东西,我非常感谢您的帮助,只要给我一些想法,我会继续挖掘。提前感谢。

在使用
foreach
循环迭代列表时,不能从列表中删除元素

 if (details.Remove("Name3"))
     Console.WriteLine("Removed");
 else
     Console.WriteLine("Not Found");

链表类似于数组,因为它是数据的集合。列表中的每个项目都存储到下一个项目(通常是上一个项目)的链接,从而获得名称


您不能修改正在循环的列表,因为您对该列表的引用将无效。

如果您希望在列表中添加额外信息,只需创建一个封装该信息的类,因为
链接列表是一个泛型类型。例如:

//Structure to hold extra information
public class PersonDetails
{
  public string Name {get; private set;}

  public int Age {get; private set;}

  public string Address {get; private set;}

  //Constructor
  public PersonDetails(string name, int age, string address)
  {
    this.Name = name;
    this.Age = age;
    this.Address = address;
  }
}   
然后可以创建包含以下类型的新链接列表:

LinkedList<PersonDetails> list = new LinkedList<PersonDetails>();
list.AddFirst(new PersonDetails("Name", 22, "Address"));
LinkedList=新建LinkedList();
AddFirst(新联系人(“姓名”,22,“地址”);

请注意,枚举集合时无法修改集合,需要在
foreach
循环之外执行检查并修改它。

如果可以使用LINQ,可以将代码转换为LINQ方法,例如:

details = details.Where(item => !item.Contains("Name3")).ToList();

无法在foreach循环中从集合中添加/删除项--将引发异常(如您所见),对列表的引用不是无效的。。。只是枚举数处于无效状态。我不是指列表引用,而是指向的引用。i、 e.如果您删除了当前所在的项目,则您正在破坏枚举数。
details = details.Where(item => !item.Contains("Name3")).ToList();