2016-07-29 77 views
0

如果multiUPC有多個值,我想循環拆分值並循環並將每個值添加到模型中。如果我在循環中返回,它只會經過一次循環。 我想創建兩個列表項並在循環完成後返回它們兩個。 這是我的代碼。C#將項添加到循環列表中

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; 

我想從我目前恢復循環返回所有數值空

感謝

+0

您使用在循環了'return'無條件。它只能進行一次迭代,就好像它到達那裏一樣,「return」告訴它離開該方法。您需要在循環之前聲明一個列表,將'.Add()'項目添加到循環中的列表中,然後在循環之後返回聲明的列表*。 –

+0

@up或使用收益率回報。 –

回答

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

然後再決定如何添加,例如如果你只想返回sourceList<PRM>

var result = source 
    .ToList(); 
如果要添加到現有的列表

List<PRM> result = ... 

    ... 

    result.AddRange(source); 
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 
0

如果你想在一個循環中返回的項目列表,你可以使用產量

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

     }