C# 索引为C的ForEach#

C# 索引为C的ForEach#,c#,linq,foreach,C#,Linq,Foreach,我需要从Linq中的ForEach调用函数,并且需要从ForEach List<string> listString= new List<string>(); listString.ForEach((str, i) => { Func(str, i) , i++}); private ResponseBase Func(string s,int i) { List listString=new List(); ForEach((str,i)=>{Func(st

我需要从Linq中的
ForEach
调用函数,并且需要从
ForEach

List<string> listString= new List<string>();

listString.ForEach((str, i) => { Func(str, i) , i++});

private ResponseBase Func(string s,int i)
{
List listString=new List();
ForEach((str,i)=>{Func(str,i),i++});
私有响应基函数(字符串s,int i)
{

您可以尝试以下方法:

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

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

您可以尝试以下操作:

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

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

我是LINQ的忠实粉丝。真的

但是在这种情况下,当您访问一个已经存在的
列表时,我会选择一个老式的for循环

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

它不会更长,效率更高(这可能不是问题,但让我们记住这一点),它只是完成了工作。

我是LINQ的忠实粉丝。真的

但是在这种情况下,当您访问一个已经存在的
列表时,我会选择一个老式的for循环

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

它不仅更长,而且效率更高(这可能不是问题,但让我们记住这一点),它只是完成了工作。

您可以引入一个变量,然后增加它:

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

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

List<String> values = new List<String>();
int indexTracker = 0;
values.ForEach(x=> { Func(x, indexTracker++); });
ForEach不是LinQ的一部分,所以我将删除该标记。ForEach不是LinQ的一部分,所以我将删除该标记。