在特定元素之前添加元素到列表

kul*_*_mi 6 c# list

我有一个项目列表,可以说100项.我需要在匹配我的条件的现有元素之前添加另一个元素.这样做的最快方式和最佳性能是什么?即:

foreach (var i in myList)
{
    if (myList[i].value == "myValue")
    {
        myList[i-1] add ("someOtherValue")
    }
}
Run Code Online (Sandbox Code Playgroud)

也许我应该使用其他容器?

Jam*_*iec 12

首先,您可以使用FindIndex方法找到项目的索引:

var index = myList.FindIndex(x => x.value == "myvalue");
Run Code Online (Sandbox Code Playgroud)

然后Insert在正确的点:

myList.Insert(index,newItem);
Run Code Online (Sandbox Code Playgroud)

请注意,在给定索引处插入会推送其他所有内容(考虑在索引0处查找项目).

  • 但是如果条件是集合的一个元素呢?换句话说,“myvalue”是 List<conditions> 的一个元素?如果我使用 foreach 循环将“myList”中的所有值与“conditions”中的所有元素进行比较,会导致错误吗? (2认同)

Oli*_*bes 5

考虑使用一个LinkedList<T>. 它的优点是插入或移除物品不需要移动任何物品。缺点是无法随机访问项目。您必须从第一个或最后一个项目开始遍历列表才能访问这些项目。