2011-08-14 23 views
9

I.E. Nếu tôi muốn chọn từ một mảng, kết quả là đối tượng IEnumerable<object> có nhất thiết theo thứ tự không?Bộ sưu tập C# có luôn thực thi thứ tự không?

public class Student { public string FullName, ... } 
public class School { public string Name, public Student[] Students, ... } 

public void StudentListWork(School thisSchool) 
{ 
    IEnumerable<string> StudentNames = thisSchool.Students.Select(student => student.FullName); 

    // IS StudentNames GUARANTEED TO BE IN THE SAME ORDER AS thisSchool.Students? 
} 

Cảm ơn!

+0

Học sinh là gì? Một danh sách? một danh sách được sắp xếp? một mảng? một cuốn từ điển? "bộ sưu tập" là một thuật ngữ rộng, và chúng có những đặc điểm khác nhau. –

+0

@ Mystere: Theo dòng thứ hai, đó là một mảng. –

+0

@Jon Skeet - Doh! bỏ lỡ điều đó ... –

Trả lời

15

Có, trong trường hợp này:

  • Mảng trả các mặt hàng trong trật tự tự nhiên
  • Enumerable.Select lợi nhuận mục theo thứ tự của dãy ban đầu (sau khi chiếu, tất nhiên)

Một số bộ sưu tập làm không phải là giữ nguyên thứ tự. Đặc biệt:

  • Bộ sưu tập như HashSet<T>Dictionary<TKey, TValue> không đảm bảo về trật tự, trong đó giá trị được trả về
  • Bộ sưu tập như SortedSet<T>SortedDictionary<TKey, TValue> áp dụng trật tự được bảo đảm dựa trên các mục được đặt trong họ
Các vấn đề liên quan