【发布时间】:2017-05-18 22:12:53
【问题描述】:
项目可以在任何列表中。但每个项目只有一次。其他列表之一中不应有相同(或相似)的项目。
这是我的课。
class Calendar
{
public List<SortedList<string, Item>> list;
public Item()
{
list = new List<SortedList<string, Item>>(); //List of Week
list.Add(new SortedList<string, Item>()); //Monday
list.Add(new SortedList<string, Item>()); //Tuesday
list.Add(new SortedList<string, Item>()); //Wednesday
list.Add(new SortedList<string, Item>()); //Thursday
list.Add(new SortedList<string, Item>()); //Friday
list.Add(new SortedList<string, Item>()); //Saturday
list.Add(new SortedList<string, Item>()); //Sunday
}
}
要删除一个项目,我尝试了这样的方法:
public void RemoveItem(string key)
{
foreach (SortedList<string, Item> item in list)
{
if (item.Keys.Contains(key))
{
item.Remove(key);
}
}
}
但这显然行不通。
这是我添加项目的方法。但这应该很明显:
public void AddItem(string Day, Item i)
{
string s = i.Title
switch (Tag)
{
case "Monday":
list[0].Add(s, i);
break;
case "Tuesday":
list[1].Add(s, i);
break;
case "Wednesday":
list[2].Add(s, i);
break;
case "Thursday":
list[3].Add(s, i);
break;
case "Friday":
list[4].Add(s, i);
break;
case "Saturday":
list[5].Add(s, i);
break;
case "Sunday":
list[6].Add(s, i);
break;
default:
list[0].Add(s, i);
break;
}
}
起初我使用 List<List<Item>>,但我发现 SortedList 更易于处理。
【问题讨论】:
-
你试过用for循环代替吗?
-
是的。也没有用。
-
我没看到你在列举第二个列表,以
foreach(var list in lists){ list.RemoveWhere(x => x.key == key);}为例... -
看来我没有(访问)方法
.RemoveWhere()