如何在 C# 中使用 linq 代替 foreach 循环

Mat*_*eri 1 c# linq

我正在尝试为下一种情况找到解决方案:

  1. 我有带有项目 id 的数组

    var arrayIds = new long []{1076,2840,4839,3920,..., N};
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我有返回一个项目的方法

    public Item getItem(long id) {
        return new Item{Id = id, Name = "name"};
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在这里尝试获取所有项目

    var itemList = new List<Item>();
    
    foreach(var id in arrayIds) {
        itemList.Add(getItem(id));
    }
    
    Run Code Online (Sandbox Code Playgroud)

是否可以在这里使用 Linq 来代替foreach

我试过写类似的东西

itemList = arrayIds.ForEach(x => getItem(x));
Run Code Online (Sandbox Code Playgroud)

所以我这里有下一个错误:

没有给出与“ ”所需的形式参数“action”相对应的Array.ForEach<T>(T[], Action<T>)参数

所以我不知道如何正确使用Linq。

小智 7

我试过写类似的东西 itemList = arrayIds.ForEach(x => getItem(x));

ForEach()适用于List<T>

arrayIds.ToList().ForEach(x => getItem(x));
Run Code Online (Sandbox Code Playgroud)

但你想要的是:

var itemList = arrayIds.Select(getItem).ToList();
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想枚举项目:

var items = arrayIds.Select(getItem);
Run Code Online (Sandbox Code Playgroud)