我需要存储用户输入的项目列表。这些项目可以有多个与之关联的分类,这些分类可以有自己的属性。以这种方式存储数据的最佳方法是什么?
仅举一个例子,我将使用汽车。用户输入他们有福特。然后用户指定他们拥有哪些福特汽车(可能是Mustang,Focus等)。然后输入Mustang,Focus或其他任何费用。因此,我们最终会得到一份福特汽车清单,每辆汽车都有自己的成本。
然后用户将输入GM并启动相同类型的另一个列表。 这就是我看到这个列表的方式:
Ford -> Mustang -> $30000
-> Focus -> $20000
-> F150 -> $40000
GM -> Camaro -> $30000
-> Corvette -> $50000
我考虑过使用嵌套数组,但这似乎不是处理这种情况的有效方法,因为看起来我必须深入嵌套3个数组。如果我做了一系列对象,我将不得不为每辆车复制制造商(使用我的例子),我只希望用户看到每个制造商的一个条目。
答案 0 :(得分:1)
您可能想为对象创建自己的类/结构:
public class Car
{
public string Brand { get; set; }
public string Model { get; set; }
public int Price { get; set; }
}
使用示例:
var carsDict = new Dictionary<string, List<CarDetails>>()
{
{ "Ford", new List<CarDetails>() },
{ "GM", new List<CarDetails>() },
};
var mustang = new CarDetails
{
Brand = "Ford",
Model = "Mustang",
Price = 30000
}
carsDict["Ford"].Add(mustang);
carsDict["Ford"].Add(new CarDetails { Brand="Ford", Model="Focus", Price=20000 });
如果你想让所有福特汽车说出来,你可以直接拿到清单:
var allFords = carDicts["Ford"];
答案 1 :(得分:0)
使用Car模型然后使用CarView模型做一些简单的事情,以提供可以根据需要显示的汽车列表。
public class Car
{
public string Brand { get; set; }
public string Model { get; set; }
public decimal Price { get; set; }
}
public class CarView
{
public List<Car> CarList { get; set; }
}
然后,您可以使用一系列汽车填充CarList并显示您想要的汽车:
var mustang = new Car
{
Brand = "Ford",
Model = "Mustang",
Price = 30000.00M
};
var focus = new Car
{
Brand = "Ford",
Model = "Focus",
Price = 20000.00M
};
var corvette = new Car
{
Brand = "GM",
Model = "Corvette",
Price = 50000.00M
};
CarView dealerCars = new CarView()
{
CarList = new List<Car>()
};
dealerCars.CarList.Add(mustang);
dealerCars.CarList.Add(focus);
dealerCars.CarList.Add(corvette);
var filteredList = dealerCars.CarList.Where(item => item.Brand == "Ford");
foreach(var car in filteredList)
{
Console.WriteLine("Brand: {0}, Model: {1}, Price: ${2}", car.Brand, car.Model, car.Price);
}
Console.ReadLine();
结果: