Combining unique rows from an array of objects

I have an array of objects containing strings.

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

I want to get a string of unique elements from an array associated with ,, I also need to check if the string is isNullOrWhiteSpace;

PIZZA HUT, ISLAMABAD, PAKISTAN. 

I am currently doing the following. But you can see that this required a lot of testing in the if statement. I was wondering if there is a better way using 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 contains PIZZA HUT, ISLAMABAD, PAKISTAN, PAKISTAN

+5
source share
4 answers

You can use the method string.Join()and get an array of different string elements from an array of objects.

try the following:

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

Yes, you can use LINQ:

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

All Articles