首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于List.RemoveAll()有关问题

2013-03-28 
关于List.RemoveAll()问题RecipeModel model (RecipeModel)listBoxForRecipe.SelectedItem//model.List

关于List.RemoveAll()问题


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)同样可以实现,不过太不方便了。
[解决办法]
为什么要.ToList()?
生成一个新的对象,你操作的都是新生成的。
我觉得你有必要从基础学起,免得将来地基不牢出事故。
[解决办法]
这么写
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));

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


+1

热点排行