过滤可观察的集合

时间:2015-04-30 07:57:56

标签: wpf linq entity-framework-6 observablecollection

我是wpf,Entity Framework 6和LINQ的新手。我有一个数据网格绑定到CollectionViewSource,它与ObservableCollection绑定。我只需按照https://msdn.microsoft.com/en-us/data/jj574514中的教程进行操作即可成功添加,更新和删除数据网格。本教程展示了如何加载完整的表(即类别):

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
     System.Windows.Data.CollectionViewSource categoryViewSource = 
     ((System.Windows.Data.CollectionViewSource)(this.FindResource("categoryViewSource"))); 

     _context.Categories.Load(); 
     categoryViewSource.Source = _context.Categories.Local; 
}

现在我的问题非常简单:如果我想加载某些类别,而不是所有类别,该怎么办?我希望某些用户能够更新特定的类别,因此网格只会加载这些类别。

2 个答案:

答案 0 :(得分:1)

如果您想使用linq,可以这样试试:

foo :: Int -> Int -> Int
foo 0 _ = 0
foo _ 1 = 1
foo n m = foo (m-1) n

当我没有弄错的时候,您可以将observablecollection直接绑定到wpf数据网格的ItemsSource属性。

如果您想了解更多关于linq的信息,我建议您阅读https://msdn.microsoft.com/de-de/library/bb397933.aspx

答案 1 :(得分:0)

您需要使用过滤器。

categoryViewSource.View.Filter = item =>
                 {
                     Categories category = item as Categories; // hope this are your items
                     return category.Id > 10; // or put whatever condition you want
                 };

上述方法仅返回ID为>的类别10(仅使用Id作为示例)。

同时查看此链接: http://social.technet.microsoft.com/wiki/contents/articles/26673.aspx

相关问题