2012-08-31 8 views
5

Tengo una matriz de objetos que contienen cadenas.Unir cadenas exclusivas de una matriz de objetos

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

Quiero conseguir una serie de elementos singulares de la matriz, se unieron a , También es necesario comprobar si isNullOrWhiteSpace cadena;

PIZZA HUT, ISLAMABAD, PAKISTAN. 

Actualmente estoy haciendo lo siguiente. Pero puede ver que requirió muchas verificaciones en la instrucción if. Me preguntaba si hay una mejor manera el uso de 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; 

featureName contiene PIZZA HUT, ISLAMABAD, PAKISTAN, PAKISTAN

+1

eso es lo que quiero para minimizar –

Respuesta

10

Puede utilizar string.Join() método y obtener una matriz de elementos de cadena distintos de su matriz de objetos.

probar esto:

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

Eso es lo Estaba buscando, permítanme probar –

+2

+1 La única respuesta (hasta ahora) que incluía la verificación 'IsNullOrWhiteSpace'. – Laoujin

+1

thx funcionó muy bien –

4

Sí, puede utilizar LINQ:

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

También necesito para comprobar si hay un espacio en blanco o cadena nula –

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

También necesito para comprobar si hay un espacio en blanco o cadena nula –

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