9
votes

Substitution dans les littéraux de chaînes de Verbatim?

en relation avec cette Question sur la façon d'écrire de longues requêtes SQL au sein de C #., La solution a suggéré qu'une requête longue SQL doit être écrite comme suit: xxx

qui me rend curieux d'une autre question connexe. Puis-je utiliser une substitution en quelque sorte? C'est-à-dire comment irai-je gérer si le nom de la table change, mais la requête reste la même? Dois-je revenir à l'utilisation de l'autre approche de la construction d'une chaîne à l'aide de concaténations à cordes ou existe-t-il un moyen plus élégant?


0 commentaires

3 Réponses :


26
votes

Pourquoi ne pas utiliser String.Format? Dans l'exemple spécifique que vous avez donné, vous pouvez faire quelque chose comme xxx

et l'invocation xxx


1 commentaires

C'est une bonne réponse et une idée.



5
votes

Oui, vous pouvez utiliser la méthode String.Format.

string custtype = "CT_CUSTOMER_TYPE";
string cust = "CUSTOMER"; 
string query = @"
SELECT
    c.CUSTOMER_ID,
    COALESCE (c.FIRST_NAME, ''_ + ' ' + COALESCE (c.LAST_NAME, '') AS FULL_NAME
    ct.NAME as CUSTOMER_TYPE
FROM
    {0} AS ct INNER JOIN {1} AS c
        ON ct.CUSTOMER_TYPE_ID = c.CUSTOMER_TYPE_ID
"; 

string endQuery = String.Format(query, custtype, cust);


0 commentaires

1
votes

Vous pouvez envisager d'utiliser Linq vers SQL, si vous ne l'avez pas déjà fait.

Répondant à la question réelle, vous pouvez utiliser string.format car les autres ont mentionné si vous créez le mettre en doute. Si vous souhaitez modifier une chaîne existante, essayez d'utiliser string.replace ou regex.replace comme décrit ici . C'est-à-dire: xxx


0 commentaires