Có cách nào để biết liệu một IQueryable<T>
đã được đặt hàng hay chưa (sử dụng OrderBy
hoặc OrderbyDescending
)?Xác định xem một IQueryable <T> đã được đặt hàng hay không
Vì vậy, tôi biết nên gọi số OrderBy
hoặc ThenBy
trên bộ sưu tập.
IQueryable<Contact> contacts = Database.GetContacts();
Tôi đã thử contacts is IOrderedQueryable<Contact>
, nhưng điều đó luôn đúng.
Chỉnh sửa: Tôi vừa thay đổi ví dụ của mình, ví dụ trước không thực sự hiển thị quan điểm của tôi. Giả sử rằng GetContacts
sử dụng Entity Framework và chỉ cần trả về tất cả các bản ghi của bảng.
Sau đó, tôi áp dụng một số chức năng cho contacts
, tôi không có kiến thức về những chức năng đó. Họ có thể sắp xếp hoặc lọc IQueryable<Contact>
.
Khi tôi lấy lại bộ sưu tập, tôi cần sắp xếp lại một lần nữa. Để làm như vậy, tôi cần biết liệu tôi có cần gọi số OrderBy
hoặc ThenBy
hay không. Vì vậy, tôi không sắp xếp lại toàn bộ bộ sưu tập nếu nó đã được sắp xếp.
Nếu bạn đang ở trong lĩnh vực của 'IQueryable', bạn cần phải lo lắng? Ý tôi là, một '.OrderBy' bổ sung cũng có thể dẫn đến không thay đổi những gì thực sự được thực thi bởi nhà cung cấp trên nguồn dữ liệu cơ bản. – AakashM
@AakashM, Nếu tôi gọi 'OrderBy' trên một 'IQueryable' đã được sắp xếp, tôi sẽ mất loại đó. Tôi chỉ muốn thêm vào nó. –
Tôi đã thực sự nghĩ rằng bạn đang lo lắng về perf. Làm thế nào về luôn luôn sử dụng 'ThenBy'? – AakashM