C# Conversion de List<int> Liste<double>
J'ai un List<int>
et je veux le convertir en un List<double>
. Est-il possible de faire d'autres que de simplement en parcourant les List<int>
et l'ajout d'un nouveau List<double>
comme suit:
List<int> lstInt = new List<int>(new int[] {1,2,3});
List<double> lstDouble = new List<double>(lstInt.Count);//Either Count or Length, I don't remember
for (int i = 0; i < lstInt.Count; i++)
{
lstDouble.Add(Convert.ToDouble(lstInt[0]));
}
Est-il une façon élégante de faire cela? Je suis à l'aide de C# 4.0, donc la réponse peut prendre avantage des nouvelles fonctionnalités de langage.
- (pour la petite histoire, notez que le C# 4.0 variance ne fonctionne pas sur le béton-types (
List<T>
), ne fonctionne pas sur les listes en général (IList<T>
), et ne fonctionne pas entreint
etdouble
)
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser LINQ méthodes:
ou:
Aussi, la liste de la classe a une méthode ForEach:
integers.Select(i => (double)i)
être idiomatiques. Mais non, les génériques sont une compilation de fonction - si vous souhaitez utiliser un type connu au moment de l'exécution, vous aurez besoin d'utiliser la réflexion. Typage dynamique en C# 4 peut être en mesure de vous aider, mais vous auriez à donner un exemple plus concret avant que l'on puisse dire.Vous peut utilisation
Select
comme suggéré par d'autres, mais vous pouvez également utiliserConvertAll
:Cela a deux avantages:
ToList
méthode ne sais pas la taille de la suite deSelect
, il peut donc nécessité de réaffecter les tampons, comme il va.ConvertAll
connaît la source et la destination de la taille, de sorte qu'il peut le faire en une seule fois. Il peut aussi le faire sans l'abstraction des itérateurs.Les inconvénients:
List<T>
et les tableaux. Si vous obtenez une plaineIEnumerable<T>
vous aurez à utiliserSelect
etToList
.Vous pouvez le faire à l'aide de la Sélectionnez méthode d'extension:
Vous pouvez utiliser ConvertAll méthode à l'intérieur de .Net Framework 2.0 voici un exemple
Vous pouvez utiliser une méthode de groupe:
Vous pouvez utiliser Select ou ConvertAll. Gardez à l'esprit que ConvertAll est disponible dans .Net 2.0 trop