过滤ICollectionView中的重复条目

本文关键字:ICollectionView 过滤 | 更新日期: 2023-09-27 18:14:39

我有一个类

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

这个类生成的List的值为:-

 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。请帮助。

过滤ICollectionView中的重复条目

在过滤器回调中,只有当当前对象具有所需的类别并且是第一个具有其名称的对象时才返回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);
            };