匹配列表中的特定条目

时间:2016-07-21 14:24:18

标签: c# list csv listbox selection

目前,我正在尝试编写CSV导出器实用程序,以帮助加快为我们的主管创建工作单的过程。在纸面上它是一个非常简单的概念,导入包含我们的零件信息和我们当前生产要求的CSV。 CSV的列被拆分为单独的列表。我尝试创建一个按钮,允许用户根据部件号自动设置数量。

我目前正在考虑的方法是抓住列表中的特定条目&#39 (不能想到一个更好的术语)。

示例

Dinosaur List
 1. T-Rex
 2. Triceratops
 3. Allosaurus

Diet List
 1. Carnivore
 2. Herbivore
 3. Carnivore

如果我的用户选择Allosaurus,我希望返回3的值,然后我会用它来从我的第二个列表中获取正确的条目,在这种情况下,{{1} }。

我不确定我将如何做到这一点,我们将非常感谢任何帮助或指示。

1 个答案:

答案 0 :(得分:0)

在这种情况下,您应该使用Object-Oriented编程。

如果我是你,我会宣布一个恐龙类,并为每种类型的恐龙制作子类。在超类(恐龙)中,放置类型为DinosaurDiet的抽象属性以强制子类实现此属性。这里有一些代码来解释我在说什么:

enum DinosaurDiet //The enumeration for the types of diet
{
    Carnivore,
    Herbivore
}

abstract class Dinosaur //abstract meaning it can't be instanciated, and only serves as a superclass
{
    public abstract DinosaurDiet Diet { get; }
}

class TRex : Dinosaur
{
    public override DinosaurDiet Diet { get { return DinosaurDiet.Carnivore; } }
}

class Triceratop : Dinosaur
{
    public override DinosaurDiet Diet { get { return DinosaurDiet.Herbivore; } }
}

class Allosaurus : Dinosaur
{
    public override DinosaurDiet Diet { get { return DinosaurDiet.Carnivore; } }
}

完成所有这些后,您可以列出它们并使用索引获取它们。以下是:

List<Dinosaur> dinos = new List<Dinosaur>();

dinos.Add(new TRex());
dinos.Add(new Triceratop());
dinos.Add(new Allosaurus());

//Get the 2nd dinosaur from the list (0-based)
int index = 1;
Dinosaur d = dinos[index];

确保测试index >= 0 && index < dinos.Count以避免在尝试在越界索引处获取元素时出现异常。