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)同样可以实现,不过太不方便了。

解决方案 »

  1.   

    为什么要.ToList()?
    生成一个新的对象,你操作的都是新生成的。
    我觉得你有必要从基础学起,免得将来地基不牢出事故。
      

  2.   

    这么写
    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));
      

  3.   

    我用的ObservableCollection<T>,没有RemoveAll方法……
      

  4.   


    生成一个新的对象,你操作的都是新生成的。
    我操作的对象不对吗?RecipeModel model = (RecipeModel)listBoxForRecipe.SelectedItem;
                model.ListForFood.ToList().ForEach(f => f.IsChecked = false);
    我后面这句操作有效啊?
      

  5.   


    多谢,我知道错在哪里了,不过还有几个问题想请教一下:
    ObservableCollection<T>如何实现RemoveAll()方法?
    RecipeModel model = (RecipeModel)listBoxForRecipe.SelectedItem;
                model.ListForFood.ToList().ForEach(f => f.IsChecked = false);
    这句的ForEach()为什么有效?
      

  6.   

    我说了,你有必要从基础学起。model.ListForFood.ToList().ForEach(f => f.IsChecked = false);你生成了一个新的集合对象,但是集合里的东西还是一样的,所以你改了IsChecked是有效的。但是你更改集合本身是无效的,因为集合是新生成的对象。
      

  7.   

    ……好吧,再问两个问题,问完我回去看书.
    你生成了一个新的集合对象
    是指Tolist()生成的对象是引用新的内存地址吗?
    修改集合中的IsChecked值与修改集合中项的个数,这两个操作有什么关键区别吗?
      

  8.   

    关于Linq的查询运算符的问题,如果RomeAll执行返回的是你要的Ienumerable<T>你可以直接接收,这样没错,但如果是Void或者执行的行数,因为ToList()相当于只是一个副本. 源数据源并没有任何改变.当然,你也可以用拉姆达表达式去查询再转换.ObservableCollection?感觉像WPF中的数据集合.至于你问的ObservableCollection<T>如何实现RemoveAll()方法?你可以用扩展方法来完成,  扩展出的 ObservableCollection<T> 均可以调用你实现的RomeAll方法详细的可以见:http://www.cnblogs.com/shadan/archive/2013/01/21/2869996.html