如何在二维数组中找到indexOf元素?

时间:2018-08-19 11:21:38

标签: c# arrays multidimensional-array collections indexof

我是C#的初学者,所以我不确定它是否可以用作二维数组。但是无论如何,它是字符串数组的列表。

List<string[]> cars = new List<string[]>();

我想知道如果要调用特定索引并在其中显示数组元素,该如何使用 IndexOf方法?例如,我的三个文本框将以下数据设置为每个索引的3个元素:

CarName =“ Audi”

Model =“ A3”

color =“黑色”

private void button1_Click(object sender, EventArgs e)
{
    cars.Add(new string[3]);
    cars[cars.Count-1][0] = textBox1.Text;
    cars[cars.Count-1][1] = textBox2.Text;
    cars[cars.Count-1][2] = textBox3.Text;
}

因此,如果我在另一个文本框中键入任何汽车的名称(宝马,奥迪,福特),则所有相关信息(型号和颜色)应打印在标签上。我认为在这种情况下,我需要 IndexOf 方法,但是如何针对所使用的集合类型实现该方法?

1 个答案:

答案 0 :(得分:4)

您在这里使用了错误的数据结构。您需要一个具有三个属性的类,然后可以有一个Cars而不是string数组的列表,并使用LINQ按特定的属性进行搜索。

public class Car
{
    public string Brand { get; set; } 
    public string Model { get; set; }
    public string Color { get; set; }
}

var cars = new List<Car>();

cars.Add(new Car { Name = textBox1.Text, Color = textBox2.Text, Model = textBox3.Text });

要通过特定的Brand搜索汽车:

var car = cars.FirstOrDefault(c => c.Brand == "BMW")

FirstOrDefault将返回符合条件的第一辆汽车(如果存在),否则将返回null。

注意:最好给控件赋予有意义的名称。例如:使用TxtBrandTxtModelTxtColor等。这样,代码将更具可读性。