如何从通用列表中删除项目

mah*_*_85 15 c# generics list

我有一个通用列表

如何删除项目?

EX:

Class Student
{
    private number;
    public Number
    {
        get( return number;)
        set( number = value;)
    }

    private name;
    public Name
    {
        get( return name;)
        set( name = value;)
    }

    main()
    {
        static List<student> = new list<student>();

        list.remove...???
    }
}
Run Code Online (Sandbox Code Playgroud)

Ed *_* S. 24

好吧,没有什么可以删除,因为你的列表是空的(你也没有给它一个标识符,所以你的代码将无法编译).您可以使用Remove(T item)RemoveAt(int index)分别删除指定索引处的对象或对象(一旦实际包含某些内容).

受控代码示例:

void Main(...)
{
    var list = new List<Student>();
    Student s = new Student(...);
    list.Add(s);

    list.Remove(s); //removes 's' if it is in the list based on the result of the .Equals method

    list.RemoveAt(0); //removes the item at index 0, use the first example if possible/appropriate
}
Run Code Online (Sandbox Code Playgroud)


Dan*_*mov 17


根据您的意见,我得出结论,您从输入中读取学生姓名,您需要删除具有指定姓名的学生.

class Student {
    public string Name { get; set; }
    public int Number { get; set; }

    public Student (string name, int number)
    {
        Name = name;
        Number = number;
    }
}


var students = new List<Student> {
    new Student ("Daniel", 10),
    new Student ("Mike", 20),
    new Student ("Ashley", 42)
};

var nameToRemove = Console.ReadLine ();
students.RemoveAll (s => s.Name == nameToRemove); // remove by condition
Run Code Online (Sandbox Code Playgroud)

请注意,这将删除所有具有指定姓名的学生.

如果您需要删除按名称找到的第一个学生,请先使用First方法找到他,然后调用Remove该实例:

var firstMatch = students.First (s => s.Name == nameToRemove);
students.Remove (firstMatch);
Run Code Online (Sandbox Code Playgroud)

如果您想要在删除之前确保只有一名学生具有指定名称Single,请以类似的方式使用:

var onlyMatch = students.Single (s => s.Name == nameToRemove);
students.Remove (onlyMatch);
Run Code Online (Sandbox Code Playgroud)

请注意,如果没有一个项与谓词匹配,则Single调用将失败.