我有一个带有id和文本值的查找表。
检查值是x还是y的最佳方法是什么?硬编码字符串?使用“枚举”?
编辑: 我的意思是,可以这样做:
if (VALUE_FROM_DATABASE == "value x")
then do this
如果数据库中的值将来发生变化怎么办?我想可能没有办法解决这个问题,当发生这种情况时我们总是要改变代码?
答案 0 :(得分:1)
只需使用简单的if:
if(value=="myString") {}
我在这里看不到Enum
答案 1 :(得分:0)
if(String.Compare(string, compareString,true) == 0)
{
}
答案 2 :(得分:0)
如果您有一个查找表并且正在从表中读取值等,则不能使用switch
语句,因为它必须是constant
。
答案 3 :(得分:0)
我倾向于在任何查找表上放置SystemId
值,改变程序的工作方式,然后创建匹配的enum
以在代码中引用它(尽管如果我使用的是NHibernate ,我只是使用枚举)。如果我要完全偏执严格,我会在SystemId列上创建一个检查约束和一个唯一的,以阻止任何人添加任何内容,而不必非常努力。
答案 4 :(得分:0)
可能您的意思是您的数据库查找表具有枚举样式值“In store | Out of stock | Unavailable”。如果你想在你的代码中使用枚举,你必须跳过一些箍:
原始答案,编辑OP后可能无效
类似的东西:
// get your value from the database (don't know what you use now):
string value = lookupTable.GetById(12345).Text;
if(value == "x" || value == "y")
{
// do your thing
}
但接下来我对你当前的代码做了很多考虑,但是你没有多少代码。
编辑:你问是否应该在数据库的值发生变化时更改代码。不,不需要。每次运行代码时,都会从数据库中检索值,并且不会出现问题。
答案 5 :(得分:0)
取决于您与之比较的不同值。如果是一个或两个,那么去一个头并使用if语句和等号。
不要使用大量if
语句。最好使用switch
语句或Dictionary
来查找可接受的值。
答案 6 :(得分:0)
对于字符串,有一个Equals方法,您应该将其用于比较,例如
if(value.Equals(stringToCompareTo)){}
该方法有一个重载,它从StringComparison
枚举中获取一个值,所以如果你想在你的比较中忽略这种情况,你会做类似的事情
if(value.Equals(stringToCompareTo,StringComparison.OrdinalIgnoreCase)){}
答案 7 :(得分:0)
将该字符串存储在配置
上if(VALUE_FROM_DATABASE == ValueFromConfig) //...然后这样做