Вы можете скрыть всю сложность в функции, чтобы сделать ее более читабельной, например:
Func<object[], object[]> extractArgs = x =>
{
var mc = (McPosition)x[3];
return new object[]
{
x[0], x[1], x[2],
mc.Station, mc.Slot, mc.SubSlot
};
};
И затем использовать ее следующим образом:
var result = argsPerCall.Select(extractArgs);