在我的WPF应用程序中,我想尽可能多地使用LINQ(特别是为了避免foreach
)。但是WPF与ObservableCollection一起工作很多,我不能将LINQ与这些集合一起使用。我该怎么办?
答案 0 :(得分:16)
对于任何可能遇到此问题的人来说,尝试过滤ObservableCollection但发现他们不能。
乔恩是绝对正确的,因为没有理由不能做到这一点,但对于新手或曾经使用WPF开发一段时间的人来说,关键是你需要包含“使用System.Linq;“命名空间。当您这样做时,您可以对对象执行“.where”查询。
答案 1 :(得分:10)
是什么让你觉得你不能在ObservableCollection<T>
使用LINQ?它实现了Collection<T>
所以它应该没问题。
例如:
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);
}
}
}
答案 2 :(得分:1)
OP特别要求LINQ&#34; .ForEach()&#34;方法,不能用于ObservableCollection&lt; T&gt ;,因为它实现了List&lt; T>仅
还有另一个SO主题,我找到了我的解决方案:https://stackoverflow.com/a/200584/2408978
答案 3 :(得分:0)
您可能需要我的ObservableComputations库。那是.NET API,专门设计用于处理LINQ,例如WPF中对ObservableCollection的查询,以及支持绑定到INotifyCollectionChanged和INotifyPropertyChanged对象(Xamarin,Blazor)的其他.NET UI框架。