具有ObservableCollection的LINQ

问题描述 投票:0回答:3

我有一个ObservableCollection属性,需要使用LINQ进行操作。

我要做的是,根据商品的属性,获取第一个商品并从另一个商品中删除商品。

这是我到目前为止所拥有的:

ItemsObservableCollection = ItemsObservableCollection.Where(i=>!selectedItemsObservableCollection.Any(y=> y.name == i.Name);

如果以这种方式进行操作,则会收到一个转换错误,提示我无法将IEnumerable转换为ObservableCollection。如果将值保存到var中,它将完全满足我的要求:

    var collectionItems= ItemsObservableCollection.Where(i=>!selectedItemsObservableCollection.Any(y=> y.name == i.Name);

但是我需要它来更新ObservableCollection属性。

c# linq list observablecollection
3个回答
2
投票

除了创建新的收藏夹,您还可以从原始收藏夹中删除所需的项目。例如,如果您在WPF中工作并将可观察的集合绑定到控件,则这是更可取的。

var itemsToRemove = ItemsObservableCollection.Where(
    i => !selectedItemsObservableCollection.Any(y => y.name == i.Name)).ToList();

foreach (var item in itemsToRemove)
    ItemsObservableCollection.Remove(item);

((必须使用)>ToList()避免“集合被修改”错误。)


1
投票

嗯,您有一个ObservableCollection ctor,它需要一个IEnumerable<T>


0
投票

您需要ObservableComputations。这是.NET API,用于在INotifyPropertyChangedINotifyCollectionChanged(ObservableCollection)对象上进行计算。计算结果是INotifyPropertyChanged和INotifyColectionChanged(ObservableCollection)对象。

© www.soinside.com 2019 - 2024. All rights reserved.