Cast
và OfType
trở IEnumerable<T>
implemetnations, không IList<T>
triển khai, vì vậy họ sẽ không có ích cho bạn.
Gọi. Cast<T>().ToList
sẽ dẫn đến một bản sao bổ sung của danh sách, có thể có tác động bất lợi về hiệu suất.
Cách tiếp cận tốt hơn (IMHO) sẽ chỉ là tạo lớp bao bọc và thực hiện chuyển đổi khi đang di chuyển. Bạn muốn một cái gì đó như thế này:
class ListWrapper<T> : IList<T>
{
private IList m_wrapped;
//implement all the IList<T> methods ontop of m_wrapped, doing casts
//or throwing not supported exceptions where appropriate.
//You can implement 'GetEnumerator()' using iterators. See the docs for
//yield return for details
}
Điều đó sẽ có lợi thế là không tạo bản sao khác của toàn bộ danh sách.
Nguồn
2009-04-22 09:52:55
Có bạn có thể! Chỉ cần sử dụng var result = Session.CreateCriteria (....) Danh sách() thay vì og .List(). –
stiank81
@ stiank81: đó là một câu hỏi mang tính lịch sử. ;) –
Vâng - Tôi hiểu rằng ;-) Chỉ cần thêm một bình luận với các chi tiết cùng với +1 của tôi trong niềm vui sau khi chỉ học điều này từ bạn .. – stiank81