Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 可观察的自定义集合自排序可防止插入等_C#_Sorting_Collections_Observablecollection - Fatal编程技术网

C# 可观察的自定义集合自排序可防止插入等

C# 可观察的自定义集合自排序可防止插入等,c#,sorting,collections,observablecollection,C#,Sorting,Collections,Observablecollection,我有一个自定义类型,知道如何与其他类型进行比较(它实现了IComparable),它存储在ObservableList中,工作得非常好 然而,该系列仍有一些不足之处。我需要4个功能。一个集合: 检测重复项并防止插入 在每次成功插入时自动排序 可观察到& 如果插入了项目批次,则仅在批次插入后通知 插入 我想就如何使这样一个集合,我将需要研究/实现等提示。我不是在寻找代码,但如果你可以给它一个奖金 我想做的是: 继承自ObservaleCollection,重写add方法,检查该项是否已存在,如果已

我有一个自定义类型,知道如何与其他类型进行比较(它实现了IComparable),它存储在ObservableList中,工作得非常好

然而,该系列仍有一些不足之处。我需要4个功能。一个集合:

  • 检测重复项并防止插入
  • 在每次成功插入时自动排序
  • 可观察到&
  • 如果插入了项目批次,则仅在批次插入后通知 插入
  • 我想就如何使这样一个集合,我将需要研究/实现等提示。我不是在寻找代码,但如果你可以给它一个奖金

    我想做的是:

    继承自ObservaleCollection,重写add方法,检查该项是否已存在,如果已存在,则忽略该项


    基于更通用的类型(如列表)实现我自己的可观察集合。

    因为您希望防止重复插入,并且希望排序,所以a可能是一个很好的起点。由于需要通知,因此必须扩展标准SortedSet并实现
    INotifyCollectionChanged
    INotifyPropertyChanged
    。有一个示例和另一个示例使用了
    HashSet
    (它是无序的,但您可以轻松地用
    SortedSet
    替换)


    另一个同样有效的方法是,按照您的第一个建议,扩展
    observedcollection

    observedcollection
    列表一样是“通用的”。如果您希望您的收藏实现
    INotifyCollectionChanged
    ,则没有理由不使用它。我认为你应该不断发展你的第一个想法。