如何过滤Observable Collection Class Collection

时间:2010-02-20 19:27:22

标签: wpf linq-to-sql filter observablecollection

我已经实现了Linq-To-Sql .. 在里面添加必要的表格...... 之后,linq类将自动为字段设置属性.. 我使用ObservableCollection类实现了一个类,并在其构造函数中传递了datacontextclass对象...

所以在获取所有数据后如何过滤它?

  public class BindBookIssueDetails : ObservableCollection
        {
            public BindBookIssueDetails(DataClasses1DataContext dataDC)
            {
                foreach (Resource_Allocation_View res in dataDC.Resource_Allocation_Views)
                {
                    this.Add(res);
                }
            }
        }

private BindBookIssueDetails bResource;
bResource = new BindBookIssueDetails(db);
_cmbResource.ItemSource=bResource;

请帮助我。

2 个答案:

答案 0 :(得分:13)

您可以使用CollectionViewSource并对其进行过滤。所以它只影响View(.XAML)方

    ICollectionView collectionView = CollectionViewSource.GetDefaultView(bResource);
    collectionView.Filter = new Predicate<object>(YourFilterFunction);

查看此博客了解更多详情。 http://bea.stollnitz.com/blog/?p=31

答案 1 :(得分:0)

我尝试使用@ Jobi的解决方案,但由于某种原因,我试图触发FilterFunction时遇到异常。

所以我使用了一种稍微不同的方法。我将CollectionViewSource的{​​{1}}投射到DefaultView

BindingListCollectionView

现在我可以构造一个类似SQL的过滤器字符串并像这样应用它:

myVS=(BindingListCollectionView)CollectionViewSource.GetDefaultView(sourceofdata);

我仍然会尝试解决我的问题(我认为@ Jobi的解决方案更灵活)。