2010-12-07 3 views
1
List<string> strList = new List<string>(); 
strList.Add("a"); 
strList.Add("b"); 
// I want to do this: string joined = strList.Join(","); 
// joined = "a,b" 

Muß ich aus der Liste eine Erweiterung machen oder so etwas? Ich nehme an, es könnte zuerst überprüfen, um zu sehen, dass der Typ string, vs versucht, ein Buch-Objekt zu verketten, wenn ich hatte Liste BuchlisteC#, wie eine Liste mit delim zu verbinden, zum Beispiel Liste <string> strlist ;, dann strList.Join („“)

Vielen Dank!

--- EDIT

Um zu klären, ich bitte um eine Verlängerung für List<string>. Entschuldigung für die Verwirrung!

+0

können Sie Beispiele für Buchobjekt geben und ein anderes, Sie erwähnen als String –

Antwort

1

Ja, würden Sie eine benutzerdefinierte Erweiterung so schreiben müssen:

public static string JoinString 
    (this IEnumerable<string> source, string separator) 
{ 
    return string.Join(separator, source); 
} 

Diese Sie (zum Beispiel wie List<string>) IEnumerable<string> implementiert erlauben würde JoinString auf irgendetwas zu nennen, die:

string joined = strList.JoinString(","); 

Bitte beachten Sie, dass dies eine .NET 4-spezifische Antwort ist - wenn Sie .NET 3.5 verwenden, müsste die Erweiterungsmethode wie folgt aussehen:

public static string JoinString 
    (this IEnumerable<string> source, string separator) 
{ 
    return string.Join(separator, source.ToArray()); 
} 
+0

'String.Join()' erwartet ein Array ... – Lucero

+0

In .NET wurden 4 Überladungen hinzugefügt, die 'IEnumerable ' akzeptieren, siehe http://msdn.microsoft.com/en -us/library/dd783876.aspx –

+0

String.Join akzeptiert IEnumerable : http: // msdn.microsof t.com/en-us/library/dd783876.aspx – wageoghe

2

Haben Sie versucht, dies:

List<string> strList = new List<string>(); 
strList.Add("a"); 
strList.Add("b"); 
string joined = string.Join(",", strList); 

String.Join ein IEnumerable nimmt so keine Notwendigkeit, spezielle Erweiterungsmethode zu schreiben oder über ToArray zu Array konvertiert wird().

+0

Dies beantwortet die Frage des OP nicht wirklich. Sie möchten eine 'Join'-Methode in der Liste selbst haben. –

+0

Ich sagte "keine Notwendigkeit, spezielle Erweiterungsmethode zu schreiben", aber im Rückblick auf Frage und Anfrage in der Lage zu schreiben strList.Join, ist eine Erweiterungsmethode erforderlich, um die Join-Fähigkeit zur Liste hinzuzufügen. Um jedoch die Liste beizutreten, können Sie weiterhin String.Join verwenden und die Liste übergeben. – wageoghe

+0

Ich habe es nicht sehr sorgfältig gelesen, aber ich habe es zunächst so verstanden: "Eine Liste gegeben , wie ich seine Werte verbinden kann, um eine Zeichenkette zu machen" implizierend vielleicht wusste er nicht, IEnumerable an Join zu übergeben. Sie haben jedoch Recht, es scheint, dass er zumindest über eine Join-Erweiterungsmethode auf List (oder IEnumerable) wissen möchte, und vielleicht string.Join auf ein IEnumerable anwenden. – wageoghe

0

, wenn Sie müssen sich registrieren Sie diesen Code verwenden können

string line = string.Join(",", strList.ToArray()); 
Console.WriteLine(line); 

und Sie brauchen Beispiel Ihres Buches und String-Objekt zu geben, wenn Sie eine Bedingung wollen

Verwandte Themen