以下是App.Config Code
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<add key="DBServer" value="Localhost"/>
<add key="DBServer" value="Sql2005rs"/>
<add key="DBName" value="Everest"/>
</appSettings>
</configuration>
我试图在组合框中返回值Local Host和Sql2005rs这是我正在使用的,任何人都可以告诉我为什么它会失败。
public Form1()
{
InitializeComponent();
var DBServerNames = ConfigurationManager.AppSettings.AllKeys .Where(key => key.StartsWith("DBServer")) .Select (key => ConfigurationManager.AppSettings[key]) .ToArray();
DBServer.Items.AddRange(DBServerNames);
}
然而它只返回sql2005rs,任何人都知道为什么?
答案 0 :(得分:1)
当您使用相同的密钥进行多项设置时,您将始终获得最后一个。当你有多个相同的密钥时,每个密钥都被下一个密钥覆盖。
所以不要这样做,这真的不是一件好事 - 键应该是唯一的,就像在任何键/值字典中一样 - 将你的设置更改为:
<appSettings>
<add key="DBServers" value="Localhost,Sql2005rs"/>
<add key="DBName" value="Everest"/>
</appSettings>
然后只需取出DBServers
值并解析它。类似的东西:
string[] myServers= ConfigurationManager.AppSettings["DBServers"].Split(',');