删除字典(string,list of object)中的项
本文关键字:object of list 字典 string 删除 | 更新日期: 2023-09-27 18:05:27
我对编程比较陌生。我有一个字典(字符串,对象列表),喜欢删除对象列表中相似的项。如果列表中没有条目,则从字典中删除该条目。
Obj A属性- id,x,y
Dictionary(string, list(A)) dict = new Dictionary(string,list(A));
List(A) aList = new List(A);
aList.Add(new A(1,1,1));
aList.Add(new A(2,2,2));
dict.Add("ListA",aList);
List(A) bList = new List(A)
bList.Add(new A(1,1,1));
dict.Add("ListB",bList);
for(int i=dict.count-1; i>=0;i--)
{
List(A) temp = List(A) dict[i].value;
foreach(var entry in temp)
{
if(entry.id=="1")
temp.remove(entry);
}
}
您希望向后循环遍历列表,否则将抛出错误。您将总是向后循环数组以删除项。你从计数中减去1,因为你的数组有10个条目,所以索引是0-9,而不是1-10。
//loop dict backwards so we can remove items
for (int i = dict.Count - 1; i >= 0; i--)
{
//convert the value to List<>
List<TestObjs> objs = dict.ElementAt(i).Value as List<TestObjs>;
//Loop List<> backwards so we can remove items
for (int j = objs.Count - 1; j >= 0; j--)
{
//if current id in list is value, remove it
if (objs[j].id.Equals(1))
{
objs.RemoveAt(j);
}
}
//if list is now empty remove dict entry
if (objs.Count.Equals(0))
{
//use linq to grab the element at index and pass it's key to Remove
dict.Remove(dict.ElementAt(i).Key);
}
}