在C#中具有索引的ForEach

时间:2018-12-20 08:05:40

标签: c# linq foreach

我需要在Linq中从stable = super.nvidiaPackages.stable_390;调用函数,并且需要从ForEach发送一个字符串参数和索引

ForEach

3 个答案:

答案 0 :(得分:4)

您可以尝试这样的事情:

var responses = listString.Select((value, index) => Func(value, index)).ToList();

以上listString中每个项目的调用都会调用您定义的方法。所有呼叫的结果都将存储在一个列表中,您可以使用相应的索引来访问它们。

答案 1 :(得分:2)

我是LINQ的忠实粉丝。真的。

但是在这种情况下,当您访问现有的List时,我会选择老式的for循环。

for(var i = 0; i < listString.Count; i++)
    Func(listString[i], i);

时间不再长,效率更高(这可能不是问题,但请记住这一点),并且可以完成工作。

答案 2 :(得分:1)

您可以引入一个变量,然后对其进行递增:

List<String> values = new List<String>();
int indexTracker = 0;
values.ForEach(x=> { Func(x, indexTracker++); });

或者您可以编写以下扩展方法:

public static void ForEach<T>(this List<T> input, Action<T, int> action)
{
    for(int i = 0; i < input.Count; i++)
    {
        action(input[i], i);
    }
}

然后像

一样使用它
values.ForEach((x,i)=> Func(x, i));