2012-08-31 6 views
5

Ich habe ein Array von Objekten mit Strings.Join eindeutigen Strings aus einem Array von Objekten

var values = new object[5]; 
values[0] = "PIZZA HUT"; 
values[1] = "ISLAMABAD"; 
values[2] = "ISLAMABAD"; 
values[3] = "PAKISTAN"; 
values[4] = "PAKISTAN"; 

Ich möchte eine Reihe von einzigartigen Elemente aus dem Array erhalten, verbunden mit , auch wenn der String isNullOrWhiteSpace überprüfen müssen;

PIZZA HUT, ISLAMABAD, PAKISTAN. 

Momentan mache ich folgendes. Aber Sie können sehen, dass es zu viel Kontrollen in der if-Anweisung erforderlich ist. Ich habe mich gefragt, ob es einen besseren Weg LINQ

string featureName = values[0] as string; 
string adminboundry4 = values[1] as string; 
string adminboundry3 = values[2] as string; 
string adminboundry2 = values[3] as string; 
string adminboundry1 = values[4] as string; 


if (!string.IsNullOrWhiteSpace(adminboundry4) 
    && adminboundry4 != adminboundry1 
    && adminboundry4 != adminboundry2 
    && adminboundry4 != adminboundry3) //want to get rid of these checks 
       featureName += "," + adminboundry4; 

if (!string.IsNullOrWhiteSpace(adminboundry3)) //Not checking for duplicate here just for this question 
       featureName += "," + adminboundry3; 

if (!string.IsNullOrWhiteSpace(adminboundry2)) //Not checking for duplicate here just for this question 
       featureName += "," + adminboundry2; 

if (!string.IsNullOrWhiteSpace(adminboundry1)) //Not checking for duplicate here just for this question 
       featureName += "," + adminboundry1; 

verwendet, ist featureName enthält PIZZA HUT, ISLAMABAD, PAKISTAN, PAKISTAN

+1

das ist, was ich –

Antwort

10

können Sie string.Join() Methode verwenden und Erhalte Array-eigene String-Elemente aus deinem Objekt-Array.

versuchen Sie dies:

var Result = string.Join(",", values.Cast<string>() 
           .Where(c => !string.IsNullOrWhiteSpace(c)) 
           .Distinct()); 
+0

dass das, was Ich suchte, lassen Sie mich versuchen –

+2

+1 Die einzige Antwort (bis jetzt), die die "IsNullOrWhiteSpace" Prüfung enthalten. – Laoujin

+1

thx es hat super funktioniert –

4

Ja, Sie können LINQ verwenden:

var featureName = String.Join(
    ",", 
    values 
    .Cast<String>() 
    .Where(s => !String.IsNullOrWhiteSpace(s)) 
    .Distinct() 
); 
+0

minimieren möchte ich brauche auch für Leerzeichen oder leere Zeichenfolge zu überprüfen –

0
String.Join(",",values.ToList().Distinct(str=>str)) 
+0

Ich brauche auch für Leerzeichen oder leere Zeichenfolge überprüfen –

0
String.Join(",", values.Distinct().Where(s=>!s.ISNullOrWhiteSpace())) 
Verwandte Themen