You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中存储多分类信息?实现类Carvana窗体应用筛选功能

C#窗体应用车型筛选解决方案

1. 用类+枚举替代锯齿数组

别纠结锯齿数组了,你的场景需要存储车型的多维度信息(品牌、车身类型、名称、额外属性),用类来建模比数组灵活得多,配合你已经在用的枚举刚好:

// 品牌枚举(可直接复用你已有的)
public enum CarBrand
{
    Nissan
    // 后续新增品牌直接补充即可
}

// 车身类型枚举
public enum BodyType
{
    Truck,
    Sedan,
    SUV
}

// 车型数据模型类
public class CarModel
{
    public CarBrand Brand { get; set; }
    public BodyType BodyType { get; set; }
    public string ModelName { get; set; }
    public string ExtraInfo { get; set; } // 存储"四驱"这类额外信息
}

2. 初始化数据源

把所有Nissan车型数据存在一个List<CarModel>里,后续增删改都方便:

// 在窗体类中定义全局数据源
private List<CarModel> _allCarModels = new List<CarModel>
{
    new CarModel { Brand = CarBrand.Nissan, BodyType = BodyType.Truck, ModelName = "Titan", ExtraInfo = "四驱" },
    new CarModel { Brand = CarBrand.Nissan, BodyType = BodyType.Sedan, ModelName = "Altima", ExtraInfo = "前驱" },
    new CarModel { Brand = CarBrand.Nissan, BodyType = BodyType.SUV, ModelName = "Rogue", ExtraInfo = "适时四驱" }
};

3. 下拉框联动逻辑

给两个下拉框(品牌、车身类型)绑定枚举,然后写统一的过滤更新方法:

绑定下拉框(窗体Load事件中)

private void CarForm_Load(object sender, EventArgs e)
{
    // 绑定品牌下拉框
    cboBrand.DataSource = Enum.GetValues(typeof(CarBrand));
    // 绑定车身类型下拉框
    cboBodyType.DataSource = Enum.GetValues(typeof(BodyType));

    // 初始加载筛选结果
    UpdateFilteredCars();
}

筛选更新方法

private void UpdateFilteredCars()
{
    // 获取选中的品牌和车身类型
    var selectedBrand = (CarBrand)cboBrand.SelectedItem;
    var selectedBodyType = (BodyType)cboBodyType.SelectedItem;

    // 双重过滤:先匹配品牌,再匹配车身类型
    var filteredModels = _allCarModels.Where(car => 
        car.Brand == selectedBrand && car.BodyType == selectedBodyType).ToList();

    // 将结果绑定到展示控件(比如ListBox或ComboBox)
    listBoxCarModels.DataSource = filteredModels;
    listBoxCarModels.DisplayMember = "ModelName"; // 显示车型名称
}

绑定下拉框选中事件

给cboBrand和cboBodyType的SelectedIndexChanged事件绑定UpdateFilteredCars方法,用户切换选项时列表会自动更新。

4. 展示额外信息

如果要在用户选中车型时显示额外信息(比如四驱),给listBoxCarModels添加SelectedIndexChanged事件:

private void listBoxCarModels_SelectedIndexChanged(object sender, EventArgs e)
{
    if (listBoxCarModels.SelectedItem is CarModel selectedCar)
    {
        lblExtraInfo.Text = $"额外信息:{selectedCar.ExtraInfo}";
    }
}

内容的提问来源于stack exchange,提问作者samuel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:55:29