使用for循环填充列表

ana*_*der -1 c# for-loop

我有一个数组,其中包含我想要使用a传输到列表的属性for loop.

for (int i = 0; i < data.cars.Count; i++)
{
    var model = data.cars[i].model.ToString();
    cars = new List<Car>
    {
        new Car { Model = model }
    };
}
Run Code Online (Sandbox Code Playgroud)

继续获得System.ArgumentOutOfRangeException:Index was out of range例外.不确定如何Car使用a 在新实例中插入每个模型名称for loop.

编辑: data.Count是一个错字,使用时抛出相同的异常data.cars.Count.为了澄清,长度data.cars.Count是20个包含model属性的对象.

Ste*_*eve 5

可能你可以删除这个循环并使用单个linq行

var cars = data.cars.Select(x => new Car{ Model = x.model}).ToList();
Run Code Online (Sandbox Code Playgroud)

您的实际代码会触发上述异常,因为无论data.Count是什么,它都不等于cars集合中的元素数量.如果data.Count大于data.cars集合中的元素数,则会发生异常.

但是,您的代码中还有另一个逻辑错误,在每个循环中,您的代码会创建一个包含单个Car元素的新List.在每个循环中,您的代码会将此列表分配给外部变量汽车.当然,当循环退出时,您将外部变量汽车分配给仅包含循环中最后一个元素的列表.

如果您更喜欢标准循环方法,那么您可以编写

List<Car> cars = new List<Car>();
foreach (var car in data.cars)
{
    cars.Add(new Car { Model = car.model });
}
Run Code Online (Sandbox Code Playgroud)