Добавьте оператор declutter: true
после каждого векторного слоя, он отлично работает.
.NET 4 имеет Zip-оператор, который позволяет объединять две коллекции.
var values = { "1", "hello", "true" };
var types = { typeof(int), typeof(string), typeof(bool) };
var objects = values.Zip(types, (val, type) => Convert.ChangeType(val, type));
Метод .Zip превосходит .Select ((s, i) => ...), потому что .Select вызывает исключение, когда в ваших коллекциях нет одинакового количества элементов, тогда как .Zip просто объединит столько элементов, сколько сможет.
Если вы используете .NET 3.5, вам придется согласиться на .Select или написать собственный метод .Zip.
Теперь, несмотря на все сказанное, я никогда не использовал Convert.ChangeType. Я предполагаю, что это работает для вашего сценария, поэтому я оставлю это так.
Предположим, что оба массива имеют одинаковый размер:
string[] values = { "1", "hello", "true" };
Type[] types = { typeof(int), typeof(string), typeof(bool) };
object[] objects = values
.Select((value, index) => Convert.ChangeType(value, types[index]))
.ToArray();
object[] objects = values.Select((s,i) => Convert.ChangeType(s, types[i]))
.ToArray();