C# 如何从常规列表中删除项目

C# 如何从常规列表中删除项目,c#,list,generics,C#,List,Generics,我有一个通用列表 如何删除项目 例: 班级学生 { 私人号码; 公众号 { 获取(返回编号;) 设置(数字=值;) } 私名; 公共名称 { 获取(返回名称;) 集合(名称=值;) } main() { 静态列表=新列表(); 列表。删除。。。??? } } 好吧,没有什么可以删除的,因为您的列表是空的(您也没有给它一个标识符,所以您的代码不会编译)。您可以使用Remove(T项)或RemoveAt(int-index)分别删除对象或指定索引处的对象(一旦对象实际包含某些内容) 人工代码示例:

我有一个通用列表

如何删除项目

例:

班级学生
{
私人号码;
公众号
{
获取(返回编号;)
设置(数字=值;)
}
私名;
公共名称
{
获取(返回名称;)
集合(名称=值;)
}
main()
{
静态列表=新列表();
列表。删除。。。???
}
}

好吧,没有什么可以删除的,因为您的列表是空的(您也没有给它一个标识符,所以您的代码不会编译)。您可以使用
Remove(T项)
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
}
void Main(…)
{
var list=新列表();
学生s=新生(…);
列表。添加(s);
list.Remove(s);//根据.Equals方法的结果删除列表中的“s”
list.RemoveAt(0);//删除索引0处的项,如果可能/适当,请使用第一个示例
}

好吧,你没有给你的列表起名字,你的一些语法也不可靠

void main()
{
   static List<Student> studentList = new List<Student>();
}

// later
void deleteFromStudents(Student studentToDelete)
{
   studentList.Remove(studentToDelete);
}
void main()
{
静态列表studentList=新列表();
}
//后来
void deleteFromStudents(studentToDelete)
{
studentList.Remove(studentToDelete);
}

这里详细介绍了更多的删除函数:

也许您可以使用
字典
而不是
列表

添加学生时,请添加其ID或名称或任何可以唯一标识该学生的内容。然后您只需调用
myStudents.Remove(myStudentId)

从您的评论中,我得出结论,您从输入中读取学生姓名,需要删除具有给定姓名的学生

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
如果您想在除名前确保只有一名学生名,请以类似方式使用
Single

var onlyMatch = students.Single (s => s.Name == nameToRemove);
students.Remove (onlyMatch);
请注意,
Single
call如果没有与谓词匹配的项目,则会失败。

int count=queue.count

        while(count>0)
        {
            HttpQueueItem item = queue[0];
            /// If post succeeded..
            if (snd.IsNotExceedsAcceptedLeadsPerDayLimit(item.DataSaleID, item.AcceptedLeadsPerDayLimit) && snd.PostRecord(item.DataSaleDetailID, item.PostString, item.duplicateCheckHours, item.Username, item.Password, item.successRegex))
            {
                if (item.WaitTime > 0)
                    Thread.Sleep(item.WaitTime);
                queue.Remove(item);
            }
                ///If Exceeds Accepted leads per day limit by DataSale..
            else if (!snd.IsNotExceedsAcceptedLeadsPerDayLimit(item.DataSaleID, item.AcceptedLeadsPerDayLimit))
            {
                queue.RemoveAll(obj => obj.DataSaleID == item.DataSaleID);
            }
                /// If Post failed..
            else //if (!snd.PostRecord(item.DataSaleDetailID, item.PostString, item.duplicateCheckHours, item.Username, item.Password, item.successRegex))
            {
                queue.Remove(item);
            }
            count = queue.Count;
        }

要从网格视图中的常规列表中删除行或记录,只需编写以下代码-

List<Address> people = new List<Address>();
Address t = new Address();
people.RemoveAt(e.RowIndex);
grdShow.EditIndex = -1;
grdShow.DataSource = people;
grdShow.DataBind();
List people=newlist();
地址t=新地址();
人物移除(e.RowIndex);
grdShow.EditIndex=-1;
grdShow.DataSource=人;
grdShow.DataBind();
试试linq:

  var _resultList = list.Where(a=>a.Name != nameToRemove).Select(a=>a);

我做了一个程序,包含7张牌,然后洗牌,我希望采取,以帮助他们

class Program
{

    static void Main(string[] args)
    {
        Random random = new Random(); 
        var cards = new List<string>();
        //CARDS VECRTOR
        String[] listas = new String[] { "Card 1", "Card 2", "Card 3", "Card 4", "Card 5", "Card 6", "Card 7"};


        for (int i = 0; i<= cards.Count; i++)
        {

            int number = random.Next(0, 7); //Random number 0--->7


            for (int j = 0; j <=6; j++)
            {
                if (cards.Contains(listas[number])) // NO REPEAT SHUFFLE
                {

                    number = random.Next(0, 7); //AGAIN RANDOM

                }
                else
                {
                    cards.Add(listas[number]); //ADD CARD
                }
            }

        }

        Console.WriteLine(" LIST CARDS");

        foreach (var card in cards)
        {
            Console.Write(card + " ,");


        }

        Console.WriteLine("Total Cards: "+cards.Count);

        //REMOVE

        for (int k = 0; k <=6; k++)
        {
           // salmons.RemoveAt(k);
            Console.WriteLine("I take the card: "+cards.ElementAt(k));
            cards.RemoveAt(k); //REMOVE CARD
            cards.Insert(k,"Card Taken"); //REPLACE INDEX
            foreach (var card in cards)
            {
                Console.Write(card + " " + "\n");

            }


        }


        Console.Read(); //just pause

    }



}
类程序
{
静态void Main(字符串[]参数)
{
随机=新随机();
var cards=新列表();
//卡片向量机
String[]listas=新字符串[]{“卡1”、“卡2”、“卡3”、“卡4”、“卡5”、“卡6”、“卡7”};
对于(int i=0;i7

对于(int j=0;j感激已填好。学生编号从输入中提取,我从列表中删除。对不起,我不明白您的目的。我已在上面更新了我的答案。list lst=new list();obj.number=“101”;obj.name=“AA”lst.add(obj);我检查了cod。学生们是什么?请检查示例(学生人数是关键)我认为,我们需要考虑在这种情况下使用字典的行为——字典的构造很慢,插入、更新和删除意味着必须生成和存储hadh,使其比列表慢。但出于检索目的,字典可能更有效,因为有一个独特的值可供搜索得到了<代码>虚空>代码> s。在C语言方法中,名称通常是大写的。@ GAEONON——嗯,是的……这是为了演示的目的。这完全是离题的,但也要考虑自动实现的属性。应该使用<代码> .RelvEAT(0)< /Cord>根据索引号<代码>删除某些东西。删除(0)
不起作用。@OP:请记住,在实际应用程序中,按姓名删除学生是愚蠢的,因为学生姓名不是唯一的,所以很可能会删除错误的学生。
        while(count>0)
        {
            HttpQueueItem item = queue[0];
            /// If post succeeded..
            if (snd.IsNotExceedsAcceptedLeadsPerDayLimit(item.DataSaleID, item.AcceptedLeadsPerDayLimit) && snd.PostRecord(item.DataSaleDetailID, item.PostString, item.duplicateCheckHours, item.Username, item.Password, item.successRegex))
            {
                if (item.WaitTime > 0)
                    Thread.Sleep(item.WaitTime);
                queue.Remove(item);
            }
                ///If Exceeds Accepted leads per day limit by DataSale..
            else if (!snd.IsNotExceedsAcceptedLeadsPerDayLimit(item.DataSaleID, item.AcceptedLeadsPerDayLimit))
            {
                queue.RemoveAll(obj => obj.DataSaleID == item.DataSaleID);
            }
                /// If Post failed..
            else //if (!snd.PostRecord(item.DataSaleDetailID, item.PostString, item.duplicateCheckHours, item.Username, item.Password, item.successRegex))
            {
                queue.Remove(item);
            }
            count = queue.Count;
        }
List<Address> people = new List<Address>();
Address t = new Address();
people.RemoveAt(e.RowIndex);
grdShow.EditIndex = -1;
grdShow.DataSource = people;
grdShow.DataBind();
  var _resultList = list.Where(a=>a.Name != nameToRemove).Select(a=>a);
class Program
{

    static void Main(string[] args)
    {
        Random random = new Random(); 
        var cards = new List<string>();
        //CARDS VECRTOR
        String[] listas = new String[] { "Card 1", "Card 2", "Card 3", "Card 4", "Card 5", "Card 6", "Card 7"};


        for (int i = 0; i<= cards.Count; i++)
        {

            int number = random.Next(0, 7); //Random number 0--->7


            for (int j = 0; j <=6; j++)
            {
                if (cards.Contains(listas[number])) // NO REPEAT SHUFFLE
                {

                    number = random.Next(0, 7); //AGAIN RANDOM

                }
                else
                {
                    cards.Add(listas[number]); //ADD CARD
                }
            }

        }

        Console.WriteLine(" LIST CARDS");

        foreach (var card in cards)
        {
            Console.Write(card + " ,");


        }

        Console.WriteLine("Total Cards: "+cards.Count);

        //REMOVE

        for (int k = 0; k <=6; k++)
        {
           // salmons.RemoveAt(k);
            Console.WriteLine("I take the card: "+cards.ElementAt(k));
            cards.RemoveAt(k); //REMOVE CARD
            cards.Insert(k,"Card Taken"); //REPLACE INDEX
            foreach (var card in cards)
            {
                Console.Write(card + " " + "\n");

            }


        }


        Console.Read(); //just pause

    }



}