Попалась такая задача, которую я решил "дедовским" методом, но не покидает ощущение, что LINQ и List могут сделать это в одну строку.
Подскажите лучшее решение?
static T[] Union<T>(T[] a1, T[] a2)
{
T[] result = new T[a1.Count() + a2.Count()];
int i = 0, j = 0, k = 0;
bool use1 = true;
for (; j < a1.Count() && k < a2.Count(); i++)
{
result[i] = use1 ? a2[j] : a2[k];
if (use1) j++;
else k++;
use1 = !use1;
}
if (a1.Count() > a2.Count())
for (; j < a1.Count(); j++, i++)
result[i] = a1[j];
else if(a2.Count() > a1.Count())
for (; k < a1.Count(); k++, i++)
result[i] = a1[k];
return result;
}