Assuming you want the largest number one can obtain by reshuffling the elements of the array (without breaking them up to individual digits), the job isn't straightforward.
Try an array holding 6 and 65; it should yield 665.
Now consider 6 and 67; it should yield 676.
The different precedence is caused by the second digit in 67 being larger than the first one, which isn't the case in 65.
The correct solution requires a special comparer that basically tries both orderings of two strings, like so:
public int ConcatComparer(string s1, string s2) {
return string.Compare(s2+s1, s1+s2);
}
and it gets used like this:
Array.Sort(myarray, ConcatComparer);
s=string.Join("", myarray);
}
This yields the correct result even for
string[] myarray = new string[] { "23", "1", "101", "3", "6", "67", "65" };
:)