2011-12-15 34 views
21

Tôi có một ListCollectionView đã có bộ lọc được áp dụng cho nó. Để có được các mục được lọc từ danh sách (ví dụ: để ghi vào một tệp), có cách làm sạch hay không.Nhận các mục được lọc từ Bộ sưu tập

giải pháp hiện tại của tôi là

var filteredItems = originalCollection.Where(i => view.Filter(i)); 

Trong đoạn code tôi kiểm tra null trên originalCollectionview.Filter.

Có cách nào khác để làm điều này không?

+0

'var filteredItems = originalCollection.FindAll (view.Filter); 'cũng làm việc –

Trả lời

36

Phương pháp GetEnumerator mất bộ lọc vào tài khoản, vì vậy bạn có thể chỉ foreach trên quan điểm:

ICollectionView view = ... 
view.Filter = ... 

foreach(Foo o in view) 
{ 
    ... 
} 

(giả định các đối tượng trong bộ sưu tập ban đầu là kiểu Foo).

Bạn cũng có thể sử dụng phương pháp Cast mở rộng:

var filteredItems = view.Cast<Foo>(); 
Các vấn đề liên quan