30/09/2018, 16:47
Cách sử dụng Sort trong ArrayList trong C#?
Em đang làm bài tập đề bài yêu cầu tạo class
- Account: gồm ID, Tên, Họ, Lương.
- AccountList: chứa mảng các account sử dụng ArrayList
Giờ đề bài yêu cầu em sắp xếp theo ID, Tên, Lương, Họ thì em định dụng thuộc tính ArrayList.Sort nhưng em không sort đc?
Em có xem trên mạng thì cần dùng thêm hàm IComparer. Nhưng bữa giờ em làm hoài cũng không đc.
Mọi người có ai biết hướng dẫn em làm phần này với. Em cám ơn nhiều.
Bài liên quan
Em gửi thêm code em đã làm đi, sửa trên đó sẽ dễ hơn.
À, có phải bài dưới có liên quan đến topic này không?
@dangh @tuancoi2506 có thời gian giúp được không
Của e đây, e tham khảo nhé, a mới chỉ sort theo họ và tên, e có thể tự tạo thêm các class để có thể sort theo id và lương.
Theo như mình thấy thì là do ArrayList của bạn lưu 1 dãy các đối tượng mà bạn chưa Override lại phương thức Sort của nó nên nó không biết cách sort như thế nào, mặc định nó sort các giá trị như String, Int32, Int64, … chứ nếu muốn sort Object thì bạn phải định nghĩa lại phương thức của nó.
Em cám ơn a nhiều. V khi em sort theo ID thì e phải thay String bằng gì ạ, e mới học c# nên còn lúng túng phần này quá…
ID của e kiểu dữ liệu là gì ???
String.Compare
là phương thức dùng để so sánh 2 chuỗi thôi mà.Dạ e để ID là int và Balance e để là float. A cho e hỏi nếu để 2 kiểu đó thì mình phải thay String thành kiểu nào cho phù hợp ạ?
Với kiểu dữ liệu như vậy, thì e so sánh bình thường là được rồi mà.
Ví dụ :
Dạ, Tại e tưởng là mình dùng theo kiểu return String.Compare() giống trên luôn chứ k cầnn phải viết tường minh ra. Mà mình cho nó tự hiểu như String đc k a?
Mỗi kiểu dữ liệu có 1 cách so sánh riêng mà e.
Hoặc e có thể sử dụng với kiểu Interger như sau, còn kiểu float thì hình như k có
Dạ. Em cám ơn anh nhiều
Anh ơi cho em hỏi trong một ArrayList em muốn gọi đến một chỉ số của ArrayList thì em phải làm sao a? Ví dụ em tìm người có mức lương cao nhất: Em gọi hàm sắp xếp từ tăng đến giảm. Sau đó, em chỉ in ra người đầu tiên trong danh sách v có được không anh?
E dùng
List[0]
để lấy phần tử đầu tiên. Các phần tử trong Arraylist đánh số từ 0->n-1, với n là tổng số phần tử.Nếu sử dụng List[0] e phải gọi như thế nào mới xuất ra được a???
E thử gọi :
Accounts[0].Report()
xem đúng kDạ. Không đc a. Khi e thực hiện Accounts[0].(Equals, GetHashCode, GetType, ToString thôi a).
Hay tại em gọi nó ở trong class AccountList chứa Report() nên không thể thực hiện lệnh đc???
Ủa, e fai gọi nó ở hàm Main chứ nhỉ ???Sort cũng ở ngoài hàm Main chứ
Dạ k ý em là cài đặt hàm trong một class AccountList rồi sau đó em mới gọi trong hàm main đó a…
Nếu e gọi như v trong hàm Main nó vẫn báo lỗi chỗ acc[0] a ơi…
E thử copy toàn bộ code của e lên đây đi e
Code của e đó a.