2010-08-20 10 views
0

Je veux convertir un datarow[] en List<int>Quel est le meilleur moyen de convertir un datarow [] en Liste <int>?

List<int> UserIds; 

    public void GetGravatars() 
    { 
     var cmd = access.GetSqlCommandStoredProcedure("uspMembershipGetUserGravatarList"); 
     var table = access.ExecuteDataTable(cmd, DAL.Logic.Common.ConnectionStrings.User); 

     int[] rows = new int[table.Rows.Count]; 
     table.Rows.CopyTo(rows, 0); 
     UserIds = rows.ToList<int>(); 

    } 

    public bool UserHasGravatar(int userId) 
    { 
     UserIds.Find(
      delegate(int i) 
      { 
       return i == userId; 
      } 
     ); 
     return false; 
    } 

Quelle est la meilleure façon de le faire? Edit: Mon code doit parcourir une liste d'utilisateurs, environ 40000, et mettre à jour leur image, s'ils n'en ont pas, alors j'ai pensé qu'il serait plus rapide de charger tous les userids avec des images dans une liste, puis vérifiez que contre tous les ID utilisateur dans la base de données, si l'ID utilisateur n'existe pas, mettez à jour l'image, sinon continuez.

+0

Pouvez-vous fournir plus d'informations sur ce que vous essayez d'accomplir? – ChrisF

+0

Voulez-vous une liste d'ints, ou un tableau d'indices? Le titre de la question et l'exemple de code semblent être en désaccord sur ce que vous voulez. –

Répondre

8
rows.Select(r=>/*However you get a single int from a single row*/).ToList(); 

Mise à jour:

Je suppose que vous utilisez .NET Framework 3.5? Mais je peux me tromper ...

+0

Il a besoin d'un int [] - Array. Donc c'est ToArray() ;-) –

+0

Ai-je tort, ou devriez-vous remplacer ToList() par ToArray()? – davehauser

+0

Eh bien, son type UserIds montre la liste , on dirait que les spécifications sont contradictoires ':) Et oui, vous pouvez simplement utiliser l'autre méthode d'extension, ToArray() – flq

Questions connexes