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

时间:2019-07-08 18:41:49

标签: c# linq

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

  1. 我有一个包含商品ID的数组

    var arrayIds = new long []{1076,2840,4839,3920,..., N};
    
  2. 我有一个返回一项的方法

    public Item getItem(long id) {
        return new Item{Id = id, Name = "name"};
    }
    
  3. 这里试图获取所有物品

    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。

2 个答案:

答案 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))
相关问题