1

我有一堂课

Class ABC()
{
    public string Name{get;set;}
    public string Category{get;set;}
}

此类形成的列表具有以下价值:-

 Name = "A", Category = "Alphabet"
 Name = "1", Category = "Numeric"
 Name = "2", Category = "Numeric"
 Name = "B", Category = "Alphabet"
 Name = "A", Category = "Alphabet"

我在上面的列表中应用了过滤器(使用 ICollectionView),仅基于类别为“字母”,结果列表是:-

 Name = "A", Category = "Alphabet"
 Name = "B", Category = "Alphabet"
 Name = "A", Category = "Alphabet"

这工作正常,但我无法从列表中过滤掉这个重复的条目。我正在使用 WPF MVVM。请帮忙。

4

1 回答 1

5

只有当当前对象具有所需的类别并且是第一个具有其名称的对象时,过滤器回调才会返回 true。

像这样的东西:

    ...
    ObservableCollection<ABC> Items { get;set}
    ListCollectionView ItemsView { get;set }
    ...
    // View filter logic
    ItemsView.Filter = o =>
            {
                var abc = o as ABC;
                if (abc == null) return false;
                return abc.Category == "Alphabet" &&
                       abc == Items.First(i => i.Name == abc.Name);
            };
于 2013-05-21T07:04:14.287 回答