[英]Populate list using a for loop
我有一個具有要使用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 }
};
}
繼續獲取System.ArgumentOutOfRangeException:Index was out of range
異常。 不確定如何使用for loop
在新的Car
實例中插入每個模型名稱。
編輯: data.Count
是一個錯字,相同的異常,區別是使用拋出data.cars.Count
。 要澄清的是, data.cars.Count
的長度是20個包含model
屬性的對象。
可能您可以刪除此循環並使用單個linq行
var cars = data.cars.Select(x => new Car{ Model = x.model}).ToList();
您的實際代碼會觸發上述異常,因為無論data.Count是多少,它都不等於cars集合中元素的數量。 如果data.Count大於data.cars集合中元素的數量,則發生異常。
但是,您的代碼中還有另一個邏輯錯誤,在每個循環中,您的代碼都會創建一個包含單個Car元素的新List。 在每個循環中,您的代碼將此列表分配給外部變量car 。 當然,當循環退出時,您會將外部變量汽車分配給列表,而該列表僅包含循環中的最后一個元素。
如果您喜歡標准循環方法,則可以編寫
List<Car> cars = new List<Car>();
foreach (var car in data.cars)
{
cars.Add(new Car { Model = car.model });
}
之所以會出現這種異常,是因為數據記錄的數量可能會高於每個數據中的汽車數量。 例如,數據可能是10個項目的集合,但每個數據記錄中的汽車集合只能包含一個或兩個元素。 因此,第一次,第二次和第三次迭代可能效果很好,但是之后您將得到一個例外。
嘗試跟隨
foreach (var car in data.cars)
{
var model = car.model.ToString();
cars = new List<Car>
{
new Car { Model = model }
};
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.