01/10/2018, 16:54

Cần giúp đỡ C# Check trùng

class ListStudent
    {
        public List<Student> Data;
        public ListStudent()
        {
            Data = new List<Student>();
        }
        public void AddStudent()
        {
            Console.Write("Nhap ID: ");
            var ID = Console.ReadLine();
            Console.Write("Nhap ten: ");
            var Name = Console.ReadLine();
            Console.Write("Nhap ngay sinh: ");
            var DateOfBirth = Console.ReadLine();
            Console.Write("Nhap dia chi: ");
            var Address = Console.ReadLine();
            Console.Write("Nhap lop: ");
            var Grade = Console.ReadLine();
            Data.Add(new Student(ID, Name, DateOfBirth, Address, Grade));
        }
        public void DisplayStudent()
        {
            Console.WriteLine("Danh sach sinh vien:");
            Console.WriteLine("========================================================================");
            Console.SetCursorPosition(0, Console.CursorTop);
            Console.Write("Ma SV");
            Console.SetCursorPosition(15, Console.CursorTop);
            Console.Write("Ho va ten");
            Console.SetCursorPosition(45, Console.CursorTop);
            Console.Write("Dia chi");
            Console.SetCursorPosition(60, Console.CursorTop);
            Console.Write("Ngay sinh");
            Console.SetCursorPosition(75, Console.CursorTop);
            Console.WriteLine("Lop");
            Console.WriteLine("=========================================================================");
            foreach (var i in Data)
            {
                Console.SetCursorPosition(0, Console.CursorTop);
                Console.Write(i.ID);
                Console.SetCursorPosition(15, Console.CursorTop);
                Console.Write(i.Name);
                Console.SetCursorPosition(45, Console.CursorTop);
                Console.Write(i.Address);
                Console.SetCursorPosition(60, Console.CursorTop);
                Console.Write(i.DateOfBirth);
                Console.SetCursorPosition(75, Console.CursorTop);
                Console.WriteLine(i.Grade);
            }
            Console.WriteLine();
        }
    }
}
class Student
    {
       public string ID
        {
            get;
            private set;
        }
        public string Name
        {
            get;
            private set;
        }
        public string DateOfBirth
        {
            get;
            private set;
        }
        public string Address
        {
            get;
            private set;
        }
        public string Grade
        {
            get;
            private set;
        }
        public Student(string id, string name, string dateofbirth, string address, string grade)
        {
            ID = id;
            Name = name;
            DateOfBirth = dateofbirth;
            Address = address;
            Grade = grade;
        }
    }
}

Tình hình là em muốn kiểm tra trùng ID nếu trùng ID thì mình sửa Tên , Lớp , Địa chỉ , Ngày sinh tương ứng với cái ID đó , ID vẫn giữ nguyên ạ . Thì làm thế nào ạ

Kamui Ka viết 19:05 ngày 01/10/2018

Cái này dễ mà bạn. Bạn kiểm tra cái Student nhập vào nếu có ID giống 1 Student nào đó trong List<>, thì set các thuộc tính của Student đó với giá trị vừa nhập vào tương ứng, trừ cái ID ra. Mà cái setter của Student để private thế kia không biết có gọi được không nữa.

Trần Hoàn viết 18:55 ngày 01/10/2018

:facepalm:
Copy nguyên code mẫu…

Evil Artist viết 19:03 ngày 01/10/2018

Level1:

found = true
foreach (x in List)
     if (x.ID == 39000)
        Update();
        found = true;
    end if
end foreach
if not found 
    Add();
end if

Level2:

if List.Count(x => x.ID == 39000) > 0 
    Update;
else
    Add(); 

Level 3:

List = List.select(x=>x).Where(x=>x.ID != 39000).ToList().Add(new Student);

Góp ý 1 chút về constructor.
nên khai báo một object rỗng và set các giá trị sau, không nên truyền hết qua parameter như thế.
Lúc gọi Constructor thêm vào sau. Tất nhiên phải để public set trong phần khai báo.
Lý do, 1 method không nên có quá nhiều tham số truyền vào. tối đa cho phép là 3, mà tốt nhất là 0.

Học_sinh = new Student()
{
    ID = id,
    Name = name,
    DateOfBirth = dateofbirth,
    Address = address,
    Grade = grade,
}
// đặt tên biến tiếng Việt có dấu hoàn toàn cho phép trong C#
// nhưng không nên lạm dụng
Bài liên quan
0