基于IF进行查找的最佳方法,我不想更新模型。我画的是空白?

时间:2011-03-02 19:52:52

标签: c# asp.net-mvc

我在这里画一个空白..我正在使用MVC而我的模型没有Value Name,它只有ID。

问题在于'itm.DegreeTypeId'它只是一个int。但是我需要将它与字符串名称匹配..所以DegreeTypeId 1 =会员学位,2 =学士,3 = MBA等。

我不想更新模型以获取名称,而是快速查找。什么是最好的方式来这里?我知道我可以创建一个方法并让它根据数字返回字符串,但必须有更好的清洁方式。

        string education = string.Empty;
        int eduCount = 0;
        foreach (var itm in candidate.Educations)
        {
            if (eduCount > 0) education += "<br><br>";
            education += string.Format("<b>{0}</b><br>{1} {2}<br>{3}Graduated: {4}<br>",
                                      itm.DegreeTypeId,
                                      itm.InstitutionName,
                                      itm.InstitutionLocation,
                                      itm.GraduatedOn.HasValue
                                          ? string.Format("{0:MMMM yyyy}", itm.GraduatedOn.Value)
                                          : string.Empty);
            eduCount++;
        }

2 个答案:

答案 0 :(得分:1)

尝试使用词典

static readonly Dictionary<int, string> Degrees = new Dictionary<int, string>() {
    {1, "Associates Degree"},
    {2, "Bachelor"},
    {3, "MBA"},
    ...
};

所以相关的代码片段如下所示:

education += string.Format("<b>{0}</b><br>{1} {2}<br>{3}Graduated: {4}<br>",
                                  Degrees(itm.DegreeTypeId),
                                  ...

答案 1 :(得分:1)

你所追求的并不完全清楚,但是Dictionary<int, string>可以起作用(或者反过来,如果你试图以另一种方式看待事物)。即使是string[]也可以是int到字符串转换的简单解决方案:

static readonly string[] DegreeTypeNames = { null, // Unused
    "Associates Degree",
    "Bachelor",
    "MBA"
};

如果你有很多连续的值,这很有用(并且表现得非常好),但是如果它们都是连续的,那么字典方法会更好。

如果您需要在代码中引用这些ID,您应该考虑使用枚举。