我正在尝试为下一种情况找到解决方案:
我有带有项目 id 的数组
var arrayIds = new long []{1076,2840,4839,3920,..., N};
Run Code Online (Sandbox Code Playgroud)我有返回一个项目的方法
public Item getItem(long id) {
return new Item{Id = id, Name = "name"};
}
Run Code Online (Sandbox Code Playgroud)在这里尝试获取所有项目
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)