如何使用条件从 ObservableCollection 复制数据?

How to copy data from ObservableCollection with conditions?

我想要一个 ObservableCollection 的副本,通过使用某些条件对其进行过滤。请帮我。 我尝试了以下代码:

ObservableCollection<YourEntity> clonedCollection = new ObservableCollection<YourEntity>(clonedList);

这没问题,但需要有条件的复制(从旧对象中过滤出新对象)。需要从 clonedList

复制一些特定数据

使用 linq 查询来过滤源集合中的元素。 .Where() 查询非常好。您也可以使用 .Select() 或任何其他查询。

ObservableCollection<YourEntity> cloned = new ObservableCollection<YourEntity>(source.Where(e => e.IsSomeConditionFulfilled()));

请注意,您不会克隆将 IEnumerable 传递给 ObservableCollection 的构造函数的对象 - 两个集合 clonedsource 将引用相同的对象。这意味着,如果您通过 source 集合(例如 source.First().SomeProperty = SomeValue)更改某些 YourEntity 实例属性,并且该对象也包含在 cloned 集合中(例如 cloned.First() == source.First()),那么这些更改将反映在那里。