2015-01-16 3 views
1

У меня есть объект под названием Автомобили, а затем список объектов, называемый цветами. Эти Цвета - это возможные цвета, с которыми может прийти автомобиль. Например:Изменение элемента в списке C#

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

Теперь теоретически это может быть в любом порядке, поэтому я не могу просто использовать индекс.

Я знаю, что может получить элемент с помощью:

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

Как изменить Серебряный элемент в «Swanky Алмазный» без перестройки всего списка?

В реальной ситуации я строю список из базы данных, и у меня есть уникальный идентификатор.

Заранее спасибо.

+0

Как насчет использования цикла Еогеаспа, чтобы найти элемент, а затем изменения в после цикла? – 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"); 
Смежные вопросы