string.Format og ‘{…}’

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 );

Loading

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.