更改列表中的项目C#

时间:2015-01-16 15:05:13

标签: c# .net list

我有一个名为Cars的对象,然后是一个名为Colors的对象列表。这些颜色是汽车可以带来的可选颜色。例如:

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

现在从理论上讲,这些可以是任何顺序,所以我不能简单地使用索引。

我知道我可以使用以下方式获取项目:

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

如何在不重建整个列表的情况下将Silver项目更改为“Swanky Diamond”?

在现实生活中,我正在从数据库构建列表,并且我有一个唯一的标识符。

提前致谢。

3 个答案:

答案 0 :(得分:10)

您可以使用IndexOf和列表索引器设置器的组合,如下所示:

var index = audi.Colours.IndexOf("Silver");
if (index >= 0) {
    audi.Colours[index] = "Swanky Diamond";
}

答案 1 :(得分:1)

如果项目未按概念排序,请使用HashSet,而不是List

要查看某个项目是否包含在该集合中,请使用Contains

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

要将一个项目替换为另一个项目,请删除您要删除的项目,然后添加您要添加​​的项目:

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

答案 2 :(得分:0)

    int zeroBasedIndex = audi.Colors.IndexOf("Silver")
if (zeroBasedIndex != -1)
    audi.Colors[zeroBasedIndex] = "Swanky Diamond";
else
    //Item Not In List