1

名前、姓、ID、年などのプロパティを持つ Student 型のオブジェクトを含むリストがあります。私が望むのは、特定のインデックスを持つリストから特定の学生を削除し、それを別のリストに入れることです。そうする方法はありますか?例えば:

        if (((mystudent[index].Year== 7)) {
              mystudent.RemoveAt(index);
           // now how I shall throw the Student to a new list
}

情報をありがとう。私の問題は、別々のクラスに2つのリストがあることです。リストからアイテムを削除すると機能しますが、追加されたアイテムを他のクラスからリストに表示したい場合、アイテムを取得できません。

public class SeniorStudentsClass
    {
        public List<Student> studlist = new List<Student>();

public void ViewStudents()
        {
            for (int i = 0; i < studlist.Count; i++)
            {               
                Console.Write(studlist[i].Id + "\t");
                Console.Write(studlist[i].Year + "\t");
                Console.Write(studlist[i].Name + "\t");
                Console.Write(studlist[i].Surname + "\t");
                Console.Write(studlist[i].DOB + "\t");
                Console.Write(studlist[i].Addr);
                Console.WriteLine();
            }

  public class JuniorStudentsClass
    {
       public List<Student> mystudent = new List<Student>();  
       SeniorStudentsClass sc = new SeniorStudentsClass();

        public void PromoteStudents(int index)
        {
            SearchItem(index);
            Console.WriteLine("current record:");
            Console.WriteLine("id is:" + mystudent[index].Id);
            Console.WriteLine("year is:" + mystudent[index].Year);
            Console.WriteLine("name is:" + mystudent[index].Name);
            Console.WriteLine("surname is:" + mystudent[index].Surname);
            Console.WriteLine("dob is:" + mystudent[index].DOB);
            Console.WriteLine("address is:" + mystudent[index].Addr);
            Console.WriteLine("year is:"+mystudent[index].Year);
            if (((mystudent[index].Year== 7)) || ((mystudent[index].Year == 8)))
            {
                var student = mystudent[index];
                mystudent.RemoveAt(index);
                sc.studlist.Add(student);
                Console.WriteLine("student promoted to senior student");

        }
4

3 に答える 3

6

Linq はそれをより簡単にします。

var moveables = mystudent.Where(x => x.Year == 7);

list2.AddRage(moveables);

mystudent.RemoveRange(moveables);

「別のリスト」がまだ存在しない場合は、わずか 2 行のコードで簡単に作成することもできます。

var list2 = mystudent.Where(x => x.Year == 7).ToList();

mystudent.RemoveRange(list2);
于 2012-12-14T15:04:19.983 に答える
5

このようなもの?

if (mystudent[index].Year == 7) 
{
    var studentToRemove = mystudent[index]; //get a reference to the student
    mystudent.RemoveAt(index); //Remove
    otherList.Add(studentToRemove); //Put student on another list
}

多くの学生を調べて、特定の年にすべての学生を移動しようとしていると仮定すると、次のような方が良いかもしれません:

var yearSevenStudents = mystudent.Where(student => student.Year == 7).ToList();
于 2012-12-14T15:00:20.080 に答える
-2

よくわからないので、これがあなたの質問に答えてくれることを願っていますが、学生を新しいテーブルにコピーしてから、古いテーブルを削除してみてください

于 2012-12-14T15:01:06.393 に答える