РЕДАКТИРОВАТЬ : Я неправильно понял ваш вопрос, касающийся обновления свойства, а не обновления коллекции.Так что, если вы действительно хотите обновить свойство Price
всех элементов вашей коллекции, то пункт Where
приведенного ниже примера вам, конечно, не поможет.
Вы на самом делене изменяя свою коллекцию;)
stockCollection.ToList().ForEach((s) => s.Price = DateTime.Now.Millisecond);
Возможно, вы захотите сделать:
stockCollection = new ConcurrentBag(stockCollection.Where(...));
РЕДАКТИРОВАТЬ :
Значит, яВам нужно каждый раз создавать новый объект коллекции?
Поскольку ваша коллекция не поддерживает ни INotifyCollectionChanged
, ни INotifyPropertyChanged
, да.Я бы предложил использовать ObservableCollection
вместо вашего текущего типа коллекции, если это возможно.ObservableCollection
может уведомлять об обновлении свойства элемента, а также инициировать событие при добавлении / удалении элемента.
ObservableCollection<YourType> myCollection = new ObservableCollection<YourType>();
...
public ObservableCollection<YourType> MyCollection
{
get
{
return this.myCollection;
}
set
{
if (value != this.myCollection)
{
this.myCollection = value;
this.RaisePropertyChanged("MyCollection");
}
}
}
...
// Following lines of code will update the UI because of INotifyCollectionChanged implementation
this.MyCollection.Remove(...)
this.MyCollection.Add(...)
// Following line of code also updates the UI cause of RaisePropertyChanged
this.MyCollection = new ObservableCollection<YourType>(this.MyCollection.Where(z => z.Price == 45));