我在这里画一个空白..我正在使用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++;
}
答案 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,您应该考虑使用枚举。