2012-08-31 16 views
5

Dizeleri içeren bir dizi nesneye sahibim.Nesnelerin bir dizisinden benzersiz dizelere katılın

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

Ben diziden benzersiz unsurların bir dize almak istiyorum, ayrıca eğer dize isNullOrWhiteSpace kontrol etmeniz gerekir , katıldı;

PIZZA HUT, ISLAMABAD, PAKISTAN. 

Şu anda aşağıdakileri yapıyorum. Ancak, if ifadesinde fazla kontrol gerektirdiğini görebilirsiniz. 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 kullanarak daha iyi bir yolu olup olmadığını LINQ Evet, kullanabilirsiniz PIZZA HUT, ISLAMABAD, PAKISTAN, PAKISTAN

+1

ben ne olduğunu Ben de ben de beyaz boşluk veya boş dize –

cevap

10

Sen string.Join() yöntemini kullanabilir ve Nesne dizinizden farklı dizgi öğeleri dizisi edinin.

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

için kontrol edilmesi gereken boşluk veya null dize –

+2

+1 'IsNullOrWhiteSpace' kontrolünü içeren tek cevap (şimdiye kadar). – Laoujin

+1

thx harika çalıştı –

4

içeriyor merak:

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

aza indirmek istediklerini şu:

bu deneyin Ben aradım, bırak çalışmama izin ver –

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

için kontrol edilmesi gereken –

0
String.Join(",", values.Distinct().Where(s=>!s.ISNullOrWhiteSpace())) 
İlgili konular