我有以下代码。在我的测试planList集合中有150个项目。删除计数为75后,表示从列表中删除了75个项目。为什么在countItems列表之后是150。 似乎没有从列表中删除的项目。为什么?如何从列表中删除项目。
...
planList = (IList<UserPlanned>)_jsSerializer.Deserialize(plannedValues,typeof(IList<UserPlanned>));
int count = planList.ToList().RemoveAll(eup => eup.ID <= -1);
int countItems = planList.Count;
...
答案 0 :(得分:6)
当您调用ToList()时,会复制您的列表,然后从副本中删除项目。使用:
int count = planList.RemoveAll(eup => eup.ID <= -1);
答案 1 :(得分:3)
实际上,您要从ToList方法创建的列表中删除元素,而不是从planList本身删除。
答案 2 :(得分:1)
ToList()
正在创建要从中删除项目的其他列表。这基本上就是你在做的事情:
var list1 = (List<UserPlanned>)_jsSerializer.Deserialize(plannedValues,typeof(List<UserPlanned>));
var list2 = list1.ToList(); // ToList() creates a *new* list.
list2.RemoveAll(eup => eup.Id <= -1);
int count = list2.Count;
int count2 = list1.Count;
答案 3 :(得分:1)
var templst = planList.ToList();
int count = templst.RemoveAll(eup => eup.ID <= -1);
int countItems = templst.Count;
应该有用。如上所述,tolist命令创建一个新列表,从中删除值。 我不知道你的planList的类型,但如果它已经是List,你可以简单地省略.tolist
int count = planList.RemoveAll(eup => eup.ID <= -1);
原谅摇摇欲坠的c#,我正在写vb.net
答案 4 :(得分:0)
planList = (List<UserPlanned>)_jsSerializer.Deserialize(plannedValues,typeof(List<UserPlanned>));
int count = planList.RemoveAll(eup => eup.ID <= -1);
int countItems = planList.Count;
删除ToList()
。这是在内存中创建一个新列表,因此您永远不会实际更新您的基础列表。你也不需要它。
答案 5 :(得分:0)
planList尚未更改。
planList.ToList() //This creates a new list.
.RemoveAll() //This is called on the new list. It is not called on planList.
答案 6 :(得分:0)
planList.ToList()创建一个RemoveAll操作的新列表。它不会修改IEnumerable planList。
尝试这样的事情:
planList = (List<UserPlanned>)_jsSerializer
.Deserialize(plannedValues,typeof(List<UserPlanned>))
.ToList();
int count = planList.RemoveAll(eup => eup.ID <= -1);
int countItems = planList.Count;
如果您使用的是JavaScriptSerializer,http://msdn.microsoft.com/en-us/library/bb355316.aspx_ 然后试试这个:
planList = _jsSerializer.Deserialize<List<UserPlanned>>(plannedValues);
int count = planList.RemoveAll(eup => eup.ID <= -1);
int countItems = planList.Count;
答案 7 :(得分:0)
代码应该是
lanList = (List<UserPlanned>)_jsSerializer.Deserialize(plannedValues,typeof(List<UserPlanned>));
int count = planList.RemoveAll(eup => eup.ID <= -1);
int countItems = planList.Count;