C#将项目添加到循环中的列表中

本文关键字:列表 循环 项目 添加 | 更新日期: 2023-09-27 17:59:22

如果multiUPC有多个值,我想循环拆分这些值,循环并将每个值添加到模型中。如果我在循环中返回,它只经过循环一次。我想创建两个列表项,并在循环完成后返回它们。这是我的密码。

 for (int x = 0; x <= multiUPC.Count()-1 ; x ++)
            {
                 return new List<PRM> { new PRM((multiUPC[x]),
                                        this.ModelMap[PRP.GetPropertyName(() => s.SKu)],
                                        this.ModelMap[PRP.GetPropertyName(() => s.UPCD)],
                                        this.ModelMap[PRP.GetPropertyName(() => s.SKUD)],
                                        this.ModelMap[PRP.GetPropertyName(() => s.Dep)]) };
            }

            return null;

我想返回当前返回空的循环中的所有值

感谢

C#将项目添加到循环中的列表中

首先,让我们找出(在Linq的帮助下)要添加什么

  var source = multiUPC
    .Select((item, x) => new PRM(
       multiUPC[x],
       ModelMap[PRP.GetPropertyName(() => s.SKu)], 
       ModelMap[PRP.GetPropertyName(() => s.UPCD)],
       ModelMap[PRP.GetPropertyName(() => s.SKUD)],
       ModelMap[PRP.GetPropertyName(() => s.Dep)]
      )); 

然后决定如何添加,例如,如果您只想将source返回为List<PRM>:

  var result = source
    .ToList();

如果您想添加到现有列表中:

  List<PRM> result = ...
  ...
  result.AddRange(source); 
var result = new List<List<PRM>>();
for (int x = 0; x <= multiUPC.Count()-1 ; x ++)
            {
                 result.Add( new List<PRM> { new PRM((multiUPC[x]),
                               this.ModelMap[PRP.GetPropertyName(() => s.SKu)],
                               this.ModelMap[PRP.GetPropertyName(() => s.UPCD)],
                               this.ModelMap[PRP.GetPropertyName(() => s.SKUD)],
                               this.ModelMap[PRP.GetPropertyName(() => s.Dep)]) });
            }
return result

如果要返回循环中的项目列表,可以使用yield

看看这个

然后,如果您的退货类型是列表,您可以使用类似的收益率

for (int x = 0; x <= multiUPC.Count()-1 ; x ++)
            {
                 return yield new List<PRM> { new PRM((multiUPC[x]),
                                        this.ModelMap[PRP.GetPropertyName(() => s.SKu)],
                                        this.ModelMap[PRP.GetPropertyName(() => s.UPCD)],
                                        this.ModelMap[PRP.GetPropertyName(() => s.SKUD)],
                                        this.ModelMap[PRP.GetPropertyName(() => s.Dep)]) };
            }

但是,如果您只需要一个列表,其中包含您正在填写的值,请使用

for (int x = 0; x <= multiUPC.Count()-1 ; x ++)
            {
             return yield new PRM((multiUPC[x]),
                                    this.ModelMap[PRP.GetPropertyName(() => s.SKu)],
                                    this.ModelMap[PRP.GetPropertyName(() => s.UPCD)],
                                    this.ModelMap[PRP.GetPropertyName(() => s.SKUD)],
                                    this.ModelMap[PRP.GetPropertyName(() => s.Dep)]) ;
        }