Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Sắp xếp List<T> bằng 2 field?

  1. #1
    Ngày gia nhập
    10 2009
    Bài viết
    45

    Mặc định Sắp xếp List<T> bằng 2 field?

    mình có 1 cái list thế này
    int ID
    string LastName
    string Fisrtname
    int avg

    bây h mình muốn đưa ra 1 danh sách sắp xếp theo điểm
    nếu điểm bằng nhau thì sắp xếp theo tên

    theo 2 trường mình k biế làm thế nào cả

    thank bạn
    Sửa/Xóa bài viết

  2. #2
    Ngày gia nhập
    08 2009
    Nơi ở
    TP Cần Thơ - Lộ 91B
    Bài viết
    214

    - Vấn đề bạn hỏi thuộc về căn bản. Bạn xem lại giáo trình Giải Thuật đi
    - Đừng quá lợi dụng các hàm có sẳng trong Visual

    PHÁT TRIỂN PHẦN MỀM HỖ TRỢ CÔNG VIỆC
    ỨNG DỤNG QUẢN LÝ CHO DOANH NGHIỆP VỪA VÀ NHỎ

    (0969.867.490 - ltnghia.wins@gmail.com)

  3. #3
    Ngày gia nhập
    10 2009
    Bài viết
    45

    vấn đề là mình lấy cơ sở dữ liệu từ file text chứ k phải từ SQL

    nên toàn bộ phần sort phải làm trên list chứ k phải trên sql rồi mới cho vào list

    mong chỉ giáo

  4. #4
    Ngày gia nhập
    08 2009
    Nơi ở
    TP Cần Thơ - Lộ 91B
    Bài viết
    214

    - Bạn lưu trữ hay lấy dữ liệu từ đâu là tùy bạn, việc đó không liên quan đến vấn đề sắp xếp
    - Mình kêu bạn xem lại giáo trình Giải Thuật
    - Mình gợi ý rồi bạn phải tự tìm hiểu và suy luận

    PHÁT TRIỂN PHẦN MỀM HỖ TRỢ CÔNG VIỆC
    ỨNG DỤNG QUẢN LÝ CHO DOANH NGHIỆP VỪA VÀ NHỎ

    (0969.867.490 - ltnghia.wins@gmail.com)

  5. #5
    Ngày gia nhập
    10 2009
    Bài viết
    45

    coi như mình ngu dốt

    bạn k cần comment nữa

    có ai khác giúp đc kẻ ngu dốt này k nhỉ

  6. #6
    Ngày gia nhập
    03 2010
    Bài viết
    122

    Mặc định Sắp xếp List<T> bằng 2 field?

    Trích dẫn Nguyên bản được gửi bởi zoro_bka Xem bài viết
    coi như mình ngu dốt

    bạn k cần comment nữa

    có ai khác giúp đc kẻ ngu dốt này k nhỉ
    sắp xếp như bình thường, và có thể là như vậy, bạn xem thử xem sao(code chỉ mang tính gợi ý)

    Code:
    if(t1.Diem>t2.Diem)
    {
            HoanVi(t1,t2);
    }
    else if(t1.Diem==t2.Diem)
    {
             if(t1.HoTen>t2.HoTen)
                {
                       HoanVi(t1,t2);
              }
    }

  7. #7
    Ngày gia nhập
    10 2009
    Bài viết
    45

    cám ơn đã góp ý

    nhưng m đã tự tìm hiểu và làm đc rồi

    giải quyết như sau :
    Code:
    pm.listPupilmark.Sort( (x,y)=>
                                         {
                                             var ret = y.Avg.CompareTo(x.Avg);
                                             if (ret == 0) ret = x.Lastname.CompareTo(y.Lastname);
                                             return Convert.ToInt32(ret) ;
                                         });
              pm.ListPpM.ForEach(p => Console.WriteLine(p.Pid + "." + p.FirstName + " " + p.Lastname + "\t\t\t\t\t" + p.Avg));

  8. #8
    Ngày gia nhập
    03 2011
    Nơi ở
    Huế
    Bài viết
    37

    Bạn có thể tự mình viết hàm sắp xếp. Tuy nhiên, nếu bạn sử dụng List<T> thì có thể sử dụng hàm Sort có sẵn. Mình có ví dụ thế này:

    Lớp SinhVien:
    Code:
    public class SinhVien
    {
        public SinhVien(string ho, string ten)
        {
            _Ho = ho;
            _Ten = ten;
        }
    
        private string _Ho;
        public string Ho
        {
            get
            {
                return _Ho;
            }
            set
            {
                _Ho = value;
            }
        }
    
        private string _Ten;
        public string Ten
        {
            get
            {
                return _Ten;
            }
            set
            {
                _Ten = value;
            }
        }
    }
    Sử dụng hàm Sort của List<T>
    Code:
    public class Run
    {
    	public static void Main()
    	{
            List<SinhVien> list = new List<SinhVien>();
            list.Add(new SinhVien("Tran", "Vinh"));
            list.Add(new SinhVien("Nguyen", "Vinh"));
            list.Add(new SinhVien("Le", "Vinh"));
            list.Add(new SinhVien("Tran", "Binh"));
            list.Add(new SinhVien("Mai", "Binh"));
            list.Add(new SinhVien("Hoang", "Binh"));
    
            Console.WriteLine("Danh sach chua sap xep");
            foreach (SinhVien s in list)
            {
                Console.WriteLine("{0} {1}", s.Ho, s.Ten);
            }
    
            Console.WriteLine("Danh sach da sap xep");
            list.Sort(delegate(SinhVien s1, SinhVien s2)
            {
                int returnValue = s1.Ten.CompareTo(s2.Ten);
                if (returnValue == 0)
                {
                    returnValue = s1.Ho.CompareTo(s2.Ho);
                }
                return returnValue;
            });
            foreach (SinhVien s in list)
            {
                Console.WriteLine("{0} {1}", s.Ho, s.Ten);
            }
    	}
    }

  9. #9
    Ngày gia nhập
    10 2009
    Bài viết
    45

    cám ơn mọi người
    mìnhđã làm đc rồi

Các đề tài tương tự

  1. ADO.NET cố định một số field của datagridview C# khi số lượng field quá nhiều
    Gửi bởi mentostrinh trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 03-04-2012, 12:47 AM
  2. Phương thức Add trong list có phải là thêm đối tượng vào list không?
    Gửi bởi princehai trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 20-09-2011, 01:14 PM
  3. hàm hủy(list::~list()) trong danh sách móc nối đối tượng xử lý những gì?
    Gửi bởi Emerald214 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 29-12-2010, 09:05 AM
  4. Chuyển các phần tử từ list này sang list kia. Sửa giúp mình?
    Gửi bởi Vaanres trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 25-07-2010, 09:45 PM
  5. Lỗi Crytalreport Chọn 4 field nhung chi hien thi co 3 field
    Gửi bởi honglaumong9 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 07-06-2010, 09:51 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn