我在数据库中有一个无法更改的字符串列表。
我需要将它们与用户可读的字符串交换,并且还能够从用户可读的字符串交换回数据库字符串。
所以,“讴歌”=“讴歌”,“日产”=“日产”,“路虎”=“路虎”
我可以想到一些基于数组和列表的方法来做到这一点,但我认为可能有一种更简单的方法。最简单的解决方案是什么?谢谢
我在数据库中有一个无法更改的字符串列表。
我需要将它们与用户可读的字符串交换,并且还能够从用户可读的字符串交换回数据库字符串。
所以,“讴歌”=“讴歌”,“日产”=“日产”,“路虎”=“路虎”
我可以想到一些基于数组和列表的方法来做到这一点,但我认为可能有一种更简单的方法。最简单的解决方案是什么?谢谢
我将创建一个包含两列的简单表:internal_name 和 display_name。当您想显示事物的用户友好名称时,请加入该表。
我认为映射属于数据库中的数据被映射。
由于没有直接相关性(例如,您不能只将第一个字母大写),您可以使用 Generic Dictionary<string, string>
,键为 DB 字符串,Value - 用户可见字符串。
这样,字符串将始终保持同步且易于定位。
myList.Add("acura", "Acura"); // myList["acura"] == "Acura"
考虑使用元组:
List<Tuple<string,string>> data = new ...
//Populate the data here
foreach(Tuple t in data)
{
t.Item1="acura"; //Read and write
t.Item2="Acura"; //Read and write
}
如果您只想要一种语言/文化,即英语/美国,我会选择 Yuriy 的回答。我提到文化和语言,因为汽车名称和品牌因国家/地区而异,即使是说英语的人也是如此。
如果需要本地化,则需要使用基于资源的方法,其中数据库值用作资源字符串名称,友好名称用作资源字符串值。
如果列表是静态的,那么您可以将 resx 文件用于适当的文化,这是最容易实现的,或者如果它是动态的,请使用您的数据库。