C#在循环中添加要列出的项目

时间:2016-07-29 13:26:45

标签: c# for-loop

如果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;

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

由于

3 个答案:

答案 0 :(得分:1)

首先,让我们找出(在 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); 

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果您想在循环中返回项目列表,可以使用 yield

看看at this

然后,如果您的返回类型是列表列表,您可以使用像这样的

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)]) ;

        }