2009-07-08 6 views
3

Code Snippet:C# - Convertir un tableau de type à une liste générique

ShippingPeriod[] arrShippingPeriods; 
. 
. 
. 

List<ShippingPeriod> shippingPeriods = ShippingPeriodList.ToList<ShippingPeriod>(); 

La dernière ligne ne compilera pas et l'erreur que je reçois est:

« 'ShippingPeriod []' ne contient pas une définition pour 'ToList' et la meilleure surcharge de méthode d'extension 'System.Linq.Enumerable.ToList (System.Collections.Generic.IEnumerable)' a des arguments non valides »

Répondre

11

essayer ceci:

ShippingPeriod [] arrShippingPeriods; 

//init and populate array 

IList<ShippingPeriods> lstShippingPeriods = 
        arrShippingPeriods.ToList<ShippingPeriods>(); 

Vous devez appeler ToList sur l'objet tableau pas la classe d'objets contenus dans le tableau.

+1

Je dois avoir été élevé ou quelque chose, ne sais pas comment je ne pouvais pas comprendre cela. Merci beaucoup ... ça marche pour moi maintenant. –

+2

Le célèbre Kumar? Bien sûr, vous étiez élevé! –

3

Une autre option serait:

ShippingPeriod [] arrShippingPeriods; 

var lstShippingPerios=new List<ShippingPeriod>(arrShippingPeriods); 

Comme les tableaux mettent déjà en œuvre IEnumerable, vous pouvez passer au constructeur de la liste.

Hope this helps

+0

Je ne vois aucun avantage à le faire - vous devez spécifier l'argument type explicitement, et il ne circule pas aussi bien dans une requête. –

+0

Ceci est juste une autre option, il est bon d'avoir des alternatives ;-) – Valentin

+4

L'avantage est que cette solution fonctionne également sur .NET 2.0. –

8

Comme d'autres l'ont dit, vous devez appeler ToList sur votre tableau. Vous n'avez pas montré ce qu'est ShippingPeriodList.

Cependant, lorsque vous obtenez ce bit correct, notez que vous n'aurez pas besoin de fournir l'argument type, car l'inférence de type le fera pour vous. En d'autres termes, cela devrait fonctionner correctement:

List<ShippingPeriod> list = arrShippingPeriods.ToList(); 
0

J'ai obtenu la solution !!!

Vous devez mettre "using System.Linq;" dans l'en-tête de votre classe, et c'est tout. Lorsque vous mettez cela, le tableau reconnaît la commande toList().

+1

Votre solution est pour un problème différent. – interjay

Questions connexes