WPF LINQ和ObservableCollection

时间:2010-07-15 16:00:58

标签: wpf linq observablecollection

在我的WPF应用程序中,我想尽可能多地使用LINQ(特别是为了避免foreach)。但是WPF与ObservableCollection一起工作很多,我不能将LINQ与这些集合一起使用。我该怎么办?

4 个答案:

答案 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的查询,以及支持绑定到INotifyCollectionChangedINotifyPropertyChanged对象(Xamarin,Blazor)的其他.NET UI框架。