LINQ/C#:Where&Foreach在列表/数组中使用索引

And*_*ite 3 c# linq foreach where

我有一个列表/数组,需要处理某些元素,但还需要处理中元素的索引.例:

List Names = john, mary, john, bob, simon
Names.Where(s => s != "mary").Foreach(MyObject.setInfo(s.index, "blah")

但是不能使用带有列表的"index"属性,反之如果名称在数组中我不能使用Foreach ...有什么建议吗?

SLa*_*aks 7

你应该使用一个简单的for循环,如下所示:

var someNames = Names.Where(s => s != "mary").ToArray();

for (int i = 0; i < someNames.Length; i++)
    someNames.setInfo(i, "blah");
Run Code Online (Sandbox Code Playgroud)

LINQ不是基本循环的全部和最终结果.

如果你真的想使用LINQ,你需要调用Select:

Names.Where(s => s != "mary").Select((s, i) => new { Index = i, Name = s })
Run Code Online (Sandbox Code Playgroud)

  • 如果您要推荐for循环,那么我建议您将条件放在for循环中,而不是先使用Linq,然后循环遍历数组. (2认同)