7

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 the array, joined with , also need to check if string isNullOrWhiteSpace;

PIZZA HUT, ISLAMABAD, PAKISTAN. 

Currently I am doing the following. But you can see that it required to much checks 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

1
  • 1
    thats what i want to minimize Commented Aug 31, 2012 at 11:55

4 Answers 4

16

You can use string.Join() method and get array distinct string elements from your object array.

try this:

var Result = string.Join(",", values.Cast<string>()
                                 .Where(c => !string.IsNullOrWhiteSpace(c))
                                 .Distinct());
Sign up to request clarification or add additional context in comments.

2 Comments

That is what I was looking for, let me try
+1 The only answer (so far) that included the IsNullOrWhiteSpace check.
5

Yes, you can use LINQ:

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

1 Comment

I also need to check for white space or null string
0
String.Join(",",values.ToList().Distinct(str=>str))

1 Comment

I also need to check for white space or null string
0
String.Join(",", values.Distinct().Where(s=>!s.ISNullOrWhiteSpace()))

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.