我有ObservableCollection
FilterableListItem
类型(下方),我做了以下查询,
this.Gears.Select(r => r.IsAvailible = r.Value == "X6");
但它不会更新列表中的任何项目。如何让select语句更新列表?
public class FilterableListItem : ViewModelBase
{
private string value;
private bool isAvailible;
public string Value
{
get
{
return this.value;
}
set
{
this.value = value;
this.OnPropertyChanged("Value");
}
}
public bool IsAvailible
{
get
{
return this.isAvailible;
}
set
{
if (value != this.isAvailible)
{
this.isAvailible = value;
this.OnPropertyChanged("IsVisible");
}
}
}
public override string ToString()
{
return this.Value;
}
}
答案 0 :(得分:2)
尝试使用:
foreach (var r in this.Gears) r.IsAvailible = r.Value == "X6";
答案 1 :(得分:2)
正如我的评论所述,Select
不应该用于更新您的对象,而是用于投射集合中的每个元素。
您应该使用标准foreach
来更新对象:
foreach (var item in Gears)
item.IsAvailable = (r.Value == "X6");
这将相应地更新您的商品。
答案 2 :(得分:1)
。选择不更新对象,而是返回IEnumerable的修改对象。试试这个:
this.Gears = new ObesrvableCollection<FilterableListItem>(this.Gears.Select(r => r.IsAvailible = r.Value == "X6"));