2011-09-22 14 views
11

Ví dụ mẫu: Khách hàng -> Đặt hàngEntityFramework4.1's .Local(). ToBindingList(), Làm thế nào để lọc sau đó?

contex.Order.Load(); 
orderBindingSource.DataSource = context.Order.Local().ToBindingList(); 

Sau đó, làm thế nào để lọc? ví dụ. context.Order.Where(m=>m.customerID > 1)

Tôi muốn thực hiện BindingList vẫn đồng bộ với ObservableCollection được trả về bởi thuộc tính Cục bộ.

+0

Phải ... điều này là khó bởi vì '.'here' tạo ra một' IQueryable', vì nó không còn là 'DBSet', bạn không thể gọi' .Local' trên đó. Bạn định sử dụng '.Local' trên các tập hợp dữ liệu hạn chế của mình như thế nào? Nó không thể được dự định chỉ sử dụng trên toàn bộ 'DBSet', phải không? Đây vẫn là một vấn đề trên EF4 mới nhất, theo như tôi có thể nói, và các tài liệu MSDN là không hữu ích. –

Trả lời

3

Bạn đã thử sử dụng lựa chọn chưa?

contex.Order.Load(); 
orderBindingSource.DataSource = 
    context.Order.Local().Select(m => m.customerID > 1).ToBindingList(); 

Sửa

Không hoàn toàn chắc chắn về điều này, nó biên dịch nhưng tôi không có một môi trường đầy đủ để kiểm tra nó. Có lẽ nếu bạn cố gắng tải dữ liệu cụ thể, và sau đó bạn có thể truy cập nó trong địa phương cho danh sách ràng buộc. Như thế này:

context.Order.Select(m => m.customerID > 1).Load(); 
orderBindingSource.DataSource = 
    context.Order.Local.ToBindingList(); 
+1

Thật không may, 'Select' giống như' Where' - nó không hỗ trợ 'ToBindingList' vì nó trả về một' IEnumerable' thay vì 'ObservableCollection'. –

+0

@DanFitch - Vui lòng xem các chỉnh sửa. –

+0

Câu trả lời hay .. làm việc rất đẹp! –

Các vấn đề liên quan