.NET 4 a un opérateur postal qui vous permet de joindre deux collections ensemble.
var values = { "1", "hello", "true" };
var types = { typeof(int), typeof(string), typeof(bool) };
var objects = values.Zip(types, (val, type) => Convert.ChangeType(val, type));
La méthode .Zip est supérieure à .Choisir ((s, i) => ...) parce que .Choisir lancera une exception lorsque vos collections ne sont pas le même nombre d'éléments, alors que. Zip va simplement compresser autant d'éléments que possible. Si vous êtes sur .NET 3.5, vous devrez vous contenter de .Sélectionnez, ou écrivez votre propre méthode .Zip. Maintenant, tout cela dit, je n'ai jamais utilisé Convert.ChangeType. Je suppose que cela fonctionne pour votre scénario, alors je vais laisser ça.
Ou simplement: 'objets var = values.zip (types, (v, t) => Convert.ChangeType (v, t));' – Ken
Ken, vous avez raison. Je vais mettre à jour mon message. Merci. –
Mis à jour. Merci pour le conseil. –