Jon
Jon

Reputation: 40062

How to Compare Values in Array

If you have a string of "1,2,3,1,5,7" you can put this in an array or hash table or whatever is deemed best.

How do you determine that all value are the same? In the above example it would fail but if you had "1,1,1" that would be true.

Upvotes: 2

Views: 12108

Answers (5)

Noldorin
Noldorin

Reputation: 147461

This can be done nicely using lambda expressions.

For an array, named arr:

var allSame = Array.TrueForAll(arr, x => x == arr[0]);

For an list (List<T>), named lst:

var allSame = lst.TrueForAll(x => x == lst[0]);

And for an iterable (IEnumerable<T>), named col:

var first = col.First();
var allSame = col.All(x => x == first);

Note that these methods don't handle empty arrays/lists/iterables however. Such support would be trivial to add however.

Upvotes: 9

Guffa
Guffa

Reputation: 700730

Not as efficient as a simple loop (as it always processes all items even if the result could be determined sooner), but:

if (new HashSet<string>(numbers.Split(',')).Count == 1) ...

Upvotes: 1

Joe
Joe

Reputation: 1399

I think using List<T>.TrueForAll would be a slick approach.

http://msdn.microsoft.com/en-us/library/kdxe4x4w.aspx

Upvotes: 1

Martin Randall
Martin Randall

Reputation: 746

How about something like...

string numArray = "1,1,1,1,1";
return numArrray.Split( ',' ).Distinct().Count() <= 1;

Upvotes: 5

AlbertoPL
AlbertoPL

Reputation: 11529

Iterate through each value, store the first value in a variable and compare the rest of the array to that variable. The instant one fails, you know all the values are not the same.

Upvotes: 6

Related Questions