2016-07-12 3 views
2

J'essaie d'ajouter à une liste. Si je déplace la déclaration dans une boucle, cela fonctionne bien mais trop lentement, si ce n'est pas le cas, ajouter une méthode remplace les valeurs précédentes.ajoutant une nouvelle valeur à List écraser la valeur précédente

que dois-je faire?

Dim _obj As New ClassDAL.Site.SalesPoint 
    Dim _r = _obj.GetCities 
    Dim temp As New ClassDAL.Site.SalesPoint 
    Dim myList As New List(Of ClassDAL.Site.SalesPoint) 


    For Each row In _r 


     temp.FullCode = Convert.ToString(row.Item(0)) 
     temp.CityCode = Convert.ToString(row.Item(1)) 
     temp.Karm = Convert.ToInt32(row.Item(2)) 
     temp.Name = Convert.ToString(row.Item(3)) 
     myList.Add(temp) 
     temp = New ClassDAL.Site.SalesPoint 

    Next 

    Return myList 

Répondre

1

Vous devez déclarer votre varible dans la boucle comme il est un type de référence, sinon dans la boucle suivante, vous modifiez la référence au dernier élément que vous avez créé.

Vous pouvez essayer de faire quelque chose comme ça, mais je ne pense pas que ce sera une plus rapide:

For Each row In _r 
    myList.Add(New ClassDAL.Site.SalesPoint With { 
     .FullCode = Convert.ToString(row.Item(0)) 
     .CityCode = Convert.ToString(row.Item(1)) 
     .Karm = Convert.ToInt32(row.Item(2)) 
     .Name = Convert.ToString(row.Item(3)) 
     }) 

Next 
+0

il faut presque 4-5 secondes pour retourner la liste – user3188649

+0

Il est dans le constructeur de 'SalesPoint 'alors. Combien de lignes avez-vous dans '_r'? –

+0

juste 81. Je ne comprends pas pourquoi cela prend tellement de temps. – user3188649