从ObservableCollection <T>中删除重复项

sta*_*low 0 c# linq observablecollection

我有一个 ObservableCollection<DateTime> myItems

并且有一些重复的项目需要删除

我尝试使用:

myItems = myItems.Distinct();
Run Code Online (Sandbox Code Playgroud)

但是我无法建立它并收到此错误:

错误1无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'System.Collections.ObjectModel.ObservableCollection'。存在显式转换(您是否缺少演员表?)

当我检查ObservableCollection时,我发现它是IEnumerable<T>以下“转到定义”所示:

public class ObservableCollection<T> : Collection<T>, INotifyCollectionChanged, INotifyPropertyChanged

public class Collection<T> : IList<T>, ICollection<T>, IReadOnlyList<T>, IReadOnlyCollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
Run Code Online (Sandbox Code Playgroud)

所以我尝试投射如下:

myItems = (ObservableCollection<DateTime>) myItems.Distinct();
Run Code Online (Sandbox Code Playgroud)

它构建良好,没有错误;但在运行时会引发以下错误:

mscorlib.ni.dll中发生类型'System.InvalidCastException'的异常,但未在用户代码中处理。其他信息:无法转换类型'd__81 1[System.DateTime]' to type 'System.Collections.ObjectModel.ObservableCollection1 [System.DateTime]'的对象。

我还尝试了以下方法:

myItems = (ObservableCollection<DateTime>) myItems.Distinct().toList<DateTime>();
Run Code Online (Sandbox Code Playgroud)

但随后我再次看到以下编译时错误:

错误1无法将类型'System.Collections.Generic.List'转换为'System.Collections.ObjectModel.ObservableCollection'

我在这里想念什么?以及如何从ObservableCollection中删除重复项?

Nik*_*wal 5

怎么样

myItems = new ObservableCollection<DateTime>(myItems.Distinct());
Run Code Online (Sandbox Code Playgroud)