我有一个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属性。
除了创建新的收藏夹,您还可以从原始收藏夹中删除所需的项目。例如,如果您在WPF中工作并将可观察的集合绑定到控件,则这是更可取的。
var itemsToRemove = ItemsObservableCollection.Where(
i => !selectedItemsObservableCollection.Any(y => y.name == i.Name)).ToList();
foreach (var item in itemsToRemove)
ItemsObservableCollection.Remove(item);
((必须使用)>ToList()
避免“集合被修改”错误。)
嗯,您有一个ObservableCollection ctor,它需要一个IEnumerable<T>
您需要ObservableComputations。这是.NET API,用于在INotifyPropertyChanged和INotifyCollectionChanged(ObservableCollection)对象上进行计算。计算结果是INotifyPropertyChanged和INotifyColectionChanged(ObservableCollection)对象。