在c#中创建特定于列表项的数据

本文关键字:列表 数据 于列表 创建 | 更新日期: 2023-09-27 18:16:57

我正在开发一个小应用程序,它使用一个项目列表,每个项目都有一组与之相关的数据。我是一个初学者,所以我不确定如何有效地做到这一点。

例如,我的列表包含以下内容:

Item 1
Item 2
Item 3
Item 4

每个项目将有6个左右相关的数据块,即

Item 1
  Material 1
  Material 2
  Material 3

等。目前,我的GUI包含项目列表和二级列表,当从主列表中选择一个项目时,二级列表显示项目所需的材料。起初,我认为我可以通过使用if语句来根据所选的项目进行填充来实现这一点,但是项目列表包含相当多的项目,这似乎非常低效。有更好的方法来实现这一点吗?

在c#中创建特定于列表项的数据

这取决于你需要的数据结构;要么你需要一个类,这样每个项目都可以有一组不同类型的属性(string, int,甚至list…)或者您可以简单地将一个项视为文本属性的列表,而您的项列表将是列表的列表。

与此类似。注意哈希集。

public class ShopMaterial
{
    public int Id {get;set;}
    public string Name {get;set;}
}
public class ShopItem 
{
    public string ShopItemName { get; set; }
    public HashSet<ShopMaterial> ShopMaterialList { get; set; }
}

然后,在Linq的帮助下,您可以通过执行以下操作获得材料。

ShopItem si = new ShopItem();
si.ShopMaterialList.Add(new ShopMaterial() { Id = 1, Name = "Item 1" });
si.ShopMaterialList.Add(new ShopMaterial() { Id = 1, Name = "Item 2" });
si.ShopMaterialList.Add(new ShopMaterial() { Id = 1, Name = "Item 3" });
si.ShopMaterialList.Where(item => item.Name == "Item 1").First();