【发布时间】:2017-09-12 22:27:06
【问题描述】:
我有一个List<object> fullList 和一个List<object> filteredList(只包含不同的项目,filteredList 中的所有项目都可以在fullList 中找到 - 但反之则不然)
现在有时在我的程序中我调用filteredList.Add(fullList[#]); 并意识到我想在filteredList 中保持与fullList 中存在的相同顺序。最好的方法是什么?
这是我想到的一个解决方案(但我想知道是否有更好的方法):
public void AddToFilteredList(object input)
{
int index = 0;
foreach (object ob in fullList)
{
if (filteredList.Contains(ob))
{
if (fullList.IndexOf(input) > fullList.IndexOf(ob))
index++;
else
{
filteredList.Insert(index, input);
return;
}
}
}
filteredList.Add(input);
}
【问题讨论】:
-
保持排序
-
使用 SortedList
filteredList 或 List.Add(items[i]).Sort(x => x.currentSortAttribute) ...? -
@mjwills 可以用多种不同的方式进行排序。基本上,我想知道是否有办法根据
fullList对filteredList进行排序。我不想弄清楚哪些属性对fullList进行排序,然后根据这些相同的属性对filteredList进行排序 -
@mjwills
fullList会随着时间而改变。它可以重新加载或以不同的方式排序。显然,在每种情况下,filteredList都必须修改 -
@mjwills 没有。两个列表都不会有重复项。
fullList只是事实,filteredList因为我在放入之前检查它是否有物品