2015-01-16 82 views
1

我有一個名爲Cars的對象,然後是一個名爲Colors的對象列表。這些顏色是汽車可以搭配的可選顏色。例如:更改列表中的項目C#

Car audi = new Car(); 
audi.Colours.Add("Black"); 
audi.Colours.Add("Silver"); 
audi.Colours.Add("White"); 

現在讓我們理論上這些可以以任何順序,所以我不能簡單地使用索引。

我知道我可以用得到的物品:

audi.Colours.Find(colour => colour.Name == "Silver"); 

我將如何改變銀項目「炫耀鑽石」無需重建整個名單?

在現實生活中,我從數據庫構建列表,並擁有唯一的標識符。

在此先感謝。

+0

如何使用foreach循環,找到項目,然後修改以循環後? – danish

+0

因爲這將被視爲接近這樣的任務的不道德的方式,原因如下: *雜亂的代碼。 *長列表可能會導致性能問題。 –

回答

10

您可以使用IndexOf組合和一個列表索引二傳手,像這樣:

var index = audi.Colours.IndexOf("Silver"); 
if (index >= 0) { 
    audi.Colours[index] = "Swanky Diamond"; 
} 
0
int zeroBasedIndex = audi.Colors.IndexOf("Silver") 
if (zeroBasedIndex != -1) 
    audi.Colors[zeroBasedIndex] = "Swanky Diamond"; 
else 
    //Item Not In List 
+2

我不認爲'Insert'會替換給定索引處的項目,這是OP正在尋找的東西。 –

+0

這是添加一個新的顏色到列表中。這個問題是關於修改列表中的一個現有項目 – Saggio

+0

您發佈您的評論後,我已經刪除了,是一個沒有我的咖啡然而,錯誤= p – Josh

1

如果項目沒有概念下令然後用HashSet,而不是List

要查看某個項目是否包含在該集合中,請使用Contains

if(audi.Colours.Contains("Silver")) 
{ 
} 

替換爲另一個一個項目中刪除您要刪除,並添加項目的項目要添加:

audi.Colours.Remove("Silver"); 
audi.Colours.Add("Swanky Diamond");