RecipeModel model = (RecipeModel)listBoxForRecipe.SelectedItem;
//model.ListForFood.ToList().RemoveAll(f => f.IsChecked == true);
model.ListForFood = model.ListForFood.ToList().FindAll(f => f.IsChecked == false).ToObservableCollection();我通过查找ListForFood这个泛型的IsChecked 来决定是否删除,
问题是RemoveAll(f => f.IsChecked == true)这个方法执行成功,我测试过RemoveAll(f => f.IsChecked == true)的返回值,返回的确实是符合条件的个数。
可ListForFood的值却没有删掉,Count不变。
通过FindAll(f => f.IsChecked == false)同样可以实现,不过太不方便了。
生成一个新的对象,你操作的都是新生成的。
我觉得你有必要从基础学起,免得将来地基不牢出事故。
RemoveAll(f => {return f.IsChecked == true;}),例子 List<string> l = new List<string>() { "A1", "A2", "A3", "B1", "B2", "B3" };
int cl = l.RemoveAll(x => { return x.Contains("A"); });
l.ForEach(x => Console.WriteLine(x));
生成一个新的对象,你操作的都是新生成的。
我操作的对象不对吗?RecipeModel model = (RecipeModel)listBoxForRecipe.SelectedItem;
model.ListForFood.ToList().ForEach(f => f.IsChecked = false);
我后面这句操作有效啊?
多谢,我知道错在哪里了,不过还有几个问题想请教一下:
ObservableCollection<T>如何实现RemoveAll()方法?
RecipeModel model = (RecipeModel)listBoxForRecipe.SelectedItem;
model.ListForFood.ToList().ForEach(f => f.IsChecked = false);
这句的ForEach()为什么有效?
你生成了一个新的集合对象,
是指Tolist()生成的对象是引用新的内存地址吗?
修改集合中的IsChecked值与修改集合中项的个数,这两个操作有什么关键区别吗?