如何更換ConnectionString
的一部分與LINQ to XML
。舉例來說,我只是想改變在下面的Data Source
和Initial Catalog
值:將LINQ to XML轉換爲ConnectionString的一部分?
<connectionStrings>
<add name="connStr" connectionString="Data Source=data-source;Initial Catalog=db;User ID=user;Password=pass" providerName="System.Data.SqlClient;MultipleActiveResultSets=true;" />
</connectionStrings>
我知道如何改變整個的connectionString屬性,但我不想這樣做,我只希望更改某些部分。
我使用下面的代碼來修改連接字符串的部分和大部分它的工作,但我如何修改它,以便它不會刪除不由;
,providerName
分隔的屬性/值這個案例。
string[] connArr = connectionString.Value.Split(';');
for (int i = 0; i < connArr.Length; i++)
{
//Get the attribute and the value splitted by the "="
string[] arrSubConn = connArr[i].Split('=');
if (arrSubConn.Length == 2)
{
string connAttr = arrSubConn[0];
string connVal = arrSubConn[1];
//Change the server name
if (connAttr == "Data Source")
connVal = environmentSettings.Server;
//Change the database name
if (connAttr == "Initial Catalog")
connVal = environmentSettings.Database;
newConnString += String.Format("{0}={1};", connAttr, connVal);
}
}
如果您需要處理providerName,請執行雙分割,首先使用分號然後使用equals。這會給你一個數組的數組。然後,您可以使用Where子句攻擊那些包含雙元素子數組的數組。 –