C# 将值添加到foreach循环内的列表中

C# 将值添加到foreach循环内的列表中,c#,C#,我只是想在foreach循环中向列表中添加浮点值。代码完美地读取了row.Size和row.Price,并向InDat添加了额外的RData1集,但始终使用RData1.Size和RData1.Price的“最新”数据集,而不是保留“以前”的循环值。所以在关闭循环之后,我在列表的每一行中得到相同的值 IEnumerable<ModelInput> inputData = mlC.Data.CreateEnumerable<ModelInput>(tView,reuseRo

我只是想在foreach循环中向列表中添加浮点值。代码完美地读取了row.Size和row.Price,并向InDat添加了额外的RData1集,但始终使用RData1.Size和RData1.Price的“最新”数据集,而不是保留“以前”的循环值。所以在关闭循环之后,我在列表的每一行中得到相同的值

IEnumerable<ModelInput> inputData = mlC.Data.CreateEnumerable<ModelInput>(tView,reuseRowObject: true);
public List<InputData> InDat { get; set; }
InDat = new List<InputData>();
InputData RData1 = new InputData();

int count = 0;
foreach (ModelInput row in inputData)
{
    count++;
    RData1.Size = Convert.ToString(row.Size);
    RData1.Price = Convert.ToString(row.Price);

    InDat.Add(RData1);
}
IEnumerable inputData=mlC.Data.CreateEnumerable(tView,reuseRowObject:true);
公共列表InDat{get;set;}
InDat=新列表();
InputData RData1=新的InputData();
整数计数=0;
foreach(inputData中的ModelInput行)
{
计数++;
RData1.Size=Convert.ToString(row.Size);
RData1.Price=Convert.ToString(row.Price);
InDat.Add(RData1);
}

您需要在循环中实例化Rdatat1:

int count = 0;
foreach (ModelInput row in inputData)
{    
    count++;
    InputData RData1 = new InputData();
    RData1.Size = Convert.ToString(row.Size);
    RData1.Price = Convert.ToString(row.Price);

    InDat.Add(RData1);
}

你的问题是什么?@MatthewWatson:“总是使用RData1.Size和RData1.Price的“最新”数据集,而不是保留“以前的”循环值”,你不断地将相同的对象添加到列表中。您需要为添加到列表中的每个元素创建一个新元素到循环体。否则,你一次又一次添加同一个对象,我认为这是一个很好的例子,为什么你应该默认使用不可变的数据类型。这将使这样的问题变得不可能。