Trong ứng dụng WPF của tôi, tôi muốn sử dụng LINQ càng nhiều càng tốt (đặc biệt là để tránh foreach
). Nhưng WPF làm việc rất nhiều với ObservableCollection, và tôi không thể sử dụng LINQ với các loại bộ sưu tập. Tôi có thể làm gì?WPF LINQ và ObservableCollection
Trả lời
Điều gì khiến bạn nghĩ rằng bạn không thể sử dụng LINQ với ObservableCollection<T>
? Nó thực hiện Collection<T>
vì vậy nó sẽ được sử dụng tốt.
Ví dụ:
using System;
using System.Collections.ObjectModel;
using System.Linq;
class Test
{
static void Main()
{
var collection = new ObservableCollection<int>()
{
1, 2, 3, 6, 8, 2, 4, 5, 3
};
var query = collection.Where(x => x % 2 == 0);
foreach (int x in query)
{
Console.WriteLine(x);
}
}
}
Chỉ cần cho bất kỳ ai khác, người có thể đi qua vấn đề này với cố gắng để lọc một ObservableCollection nhưng thấy rằng họ không thể.
Jon hoàn toàn chính xác ở chỗ không có lý do gì bạn không thể làm điều này nhưng điều quan trọng đối với người mới hoặc người đã phát triển với WPF trong một thời gian là bạn cần bao gồm "" sử dụng System.Linq; " không gian tên. Khi bạn thực hiện việc này, bạn có thể thực hiện truy vấn ".where" trên đối tượng của mình.
Điều này đúng, và nó hiệu quả với tôi. – dev1998
Cảm ơn câu trả lời bổ sung! * Đó là vấn đề của tôi :) – derekantrican
Kết quả ObservableCollection sẽ không cập nhật nếu cập nhật kết quả truy vấn là hậu quả của nguồn cơ bản đang được cập nhật. – Tormod
OP được hỏi đặc biệt cho phương thức LINQ ".ForEach()", không thể sử dụng trên ObservableCollection < T>, vì nó được triển khai cho Danh sách < T>.
Có một chủ đề khác, nơi tôi tìm thấy giải pháp của mình: https://stackoverflow.com/a/200584/2408978
- 1. WPF ObservableCollection Edit Mode
- 2. ComboBox WPF Binding to ObservableCollection
- 3. ObservableCollection Binding để WPF ListBox
- 4. WPF Binding lọc ObservableCollection ICollectionView đến Combobox
- 5. Sử dụng HashSets với ObservableCollection với WPF
- 6. WPF DataBinding ObservableCollection <T> để DataGrid
- 7. Binding WPF Canvas Trẻ em đến một ObservableCollection
- 8. cách sắp xếp ObservableCollection
- 9. Cập nhật một ObservableCollection trong một luồng riêng biệt
- 10. XMLSerialize một ObservableCollection
- 11. ObservableCollection (Of T) vs BindingList (của T)?
- 12. WPF - Ràng buộc một ObservableCollection phụ thuộc tài sản trong vòng một usercontrol
- 13. ObservableCollection <> vs. List <>
- 14. Kết hợp một ObservableCollection với một DataGrid wpf: Grid vẫn trống
- 15. Sự khác nhau giữa ObservableCollection và INotifyPropertyChanged là gì?
- 16. Liên kết một ObservableCollection với một ListView
- 17. Học WPF và MVVM
- 18. Cập nhật một ObservableCollection từ một chủ đề khác
- 19. Tại sao ObservableCollection không hỗ trợ thay đổi hàng loạt?
- 20. C# - chuyển đổi loại vô danh thành observablecollection
- 21. Cập nhật không đồng bộ cho các mục ObservableCollection
- 22. LINQ và DBNull - Lỗi
- 23. Phiên ASP.NET và LINQ
- 24. LINQ sum và null
- 25. LINQ, lambda và @
- 26. LINQ và Có
- 27. MonoDroid, SQLite và LINQ
- 28. Sử dụng Lambda biểu trên một ObservableCollection
- 29. Binding ObservableCollection mục để UserControl trong WrapPanel?
- 30. Tương đương với C# ObservableCollection trong Java
Cảm ơn bạn. Lấy làm tiếc. Tôi nhớ đã có vấn đề với một số truy vấn, nhưng bây giờ tôi đã thử và mọi thứ hoạt động. – lamarmora
Truy vấn kết quả là một IEnumerable. Có cách nào sạch sẽ để quay trở lại ObservableCollection không? –
tofutim
@tofutim: Không, không xa như tôi biết tôi sợ. –