我正在尝试寻找下一种情况的解决方案:
我有一个包含商品ID的数组
var arrayIds = new long []{1076,2840,4839,3920,..., N};
我有一个返回一项的方法
public Item getItem(long id) {
return new Item{Id = id, Name = "name"};
}
这里试图获取所有物品
var itemList = new List<Item>();
foreach(var id in arrayIds) {
itemList.Add(getItem(id));
}
是否可以在此处使用Linq代替foreach
?
我试图写类似的东西
itemList = arrayIds.ForEach(x => getItem(x));
所以我这里有下一个错误:
没有给出与“
Array.ForEach<T>(T[], Action<T>)
”的所需形式参数“ action”相对应的参数。
所以我不知道如何正确使用Linq。
答案 0 :(得分:4)
我试图写类似的东西
itemList = arrayIds.ForEach(x => getItem(x));
ForEach()
适用于List<T>
:
arrayIds.ToList().ForEach(x => getItem(x));
但是您想要的是:
var itemList = arrayIds.Select(getItem).ToList();
或者如果您只想枚举项目:
var items = arrayIds.Select(getItem);
答案 1 :(得分:2)
使用选择
var itemList = arrayIds.Select(x => getItem(x))