Nu er jeg rendt ind i samme problem et par gange, og satte mig for at løse det på den pæne måde denne gang.
Scenariet er det, at jeg gerne vil opbygge en streng vha. string.Format(…) ell. StringBuilder.AppendFormat(…). Såfremt parametrene indeholdt tuborg-parenteser (curlybraces, {}) modtager man en exception om at formateringen ikke er korrekt.
Rettere er fejlbeskeden man modtager: “Input string was not in a correct format.”
Vi eksemplificerer
System.Text.StringBuilder strBuilder = new System.Text.StringBuilder();
string strFormat = @”
SELECT
{[Measures].[Unit Price]} ON COLUMNS,
DISTINCT( {{0}.siblings} ) ON ROWS
FROM [Sales]
“;
string strValue = @”
[Products].[Product Name].&[Spegesild],
[Products].[Product Name].&[Longlife Tofu],
[Products].[Product Name].&[Filo Mix]”;strBuilder.AppendFormat( strFormat, strValue );
Det springende punkt er hvordan parseren fortolker DISTINCT( {{0}.siblings} ) ON ROWS
For det skal virke, må DISTINCT( {{0}.siblings} ) ON ROWS blive til DISTINCT( {{{0}.siblings}} ) ON ROWS
Således må det endelige udtryk der fungerer blive til
System.Text.StringBuilder strBuilder = new System.Text.StringBuilder();
string strFormat = @”
SELECT
{[Measures].[Unit Price]} ON COLUMNS,
DISTINCT( {{{0}.siblings}} ) ON ROWS
FROM [Sales]
“;
string strValue = @”
[Products].[Product Name].&[Spegesild],
[Products].[Product Name].&[Longlife Tofu],
[Products].[Product Name].&[Filo Mix]”;
strBuilder.AppendFormat( strFormat, strValue );