如果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的循环中返回所有值
由于
答案 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)]) ;
}