2017-07-11 5 views
0

In meinem unteren Code möchte ich einzelnes Zitat mit einigen anderen sagen "&" ersetzen, aber es spiegelt nicht wider.Ersetzen Sie ein einzelnes Zitat aus dem Wörterbuch C#

if(this.selectdFilterValues.Any(kvp => kvp.Value.Contains("'"))) 
{ 
    this.selectdFilterValues.Select(kvp => kvp.Value.Replace("'", "&")); 
} 

Auch ich will diesen Apostroph behandeln, wie wenn es Apostroph meiner unten JS-Funktion enthält trifft nicht

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "tmp", 
    "<script type='text/javascript'>initViz('" + 
    JsonConvert.SerializeObject(this.selectdFilterValues) + 
    "');</script>", false); 
+0

Wenn Sie 'this.selectdFilterValues.Select (kvp => kvp.Value.Replace (" '"," & "))' hier arbeitet LINQ, und das Ergebnis muss über foreach-Schleife oder Somethink realisiert werden. – KamikyIT

Antwort

4

.Select Verwendung nicht die ursprüngliche Sammlung an Ort und Stelle ändern. Es projiziert sie in ein neues IEnumerable, das Sie verwenden können, wie Sie möchten. Im Moment werfen Sie nur das Ergebnis weg. Sie können sie stattdessen ein neues Wörterbuch erstellen:

this.selectedFilterValues = this.selectdFilterValues.ToDictionary(x => x.Key, x => x.Value.Replace("'", "&"));

Oder, wenn Sie mit einem iterativen Ansatz anstelle eines funktionalen ein in Ordnung sind, können Sie einfach Schleife durch das Wörterbuch eine foreach und Überschreiben der alte Werte.

+0

FEHLER: 'Bool' enthält keine Definition für 'Ersetzen' –

+0

Wenn Sie diesen Fehler erhalten, bedeutet dies, dass Ihr Wörterbuch boolesche Werte hat, keine String-Werte. Ich habe das aus Ihrem eigenen Code-Snippet im ursprünglichen Post genommen, also müssen Sie es optimieren, wenn Ihr Code-Snippet nicht korrekt ist. –

+2

@ShwetaGupta Wenn Ihre Werte vom Typ 'bool' sind, macht Ihre Frage keinen Sinn . –

Verwandte Themen