2010-04-12 2 views
2

J'apprends encore (étapes de bébé). Messing avec une fonction et l'espoir de trouver une façon plus ordonnée de traiter mes données.Comment remplir la liste <string> avec des valeurs Datarow à partir de colonnes simples

Pour les tables les plus couramment utilisées tout au long de la vie du programme, je vais les exporter vers des données et les interroger à la place. Ce que j'espère faire est interroger les datatables pour la colonne de dire x = « ce », et convertir les valeurs de la colonne « y » directement à une liste pour revenir à l'appelant:

private List<string> LookupColumnY(string hex) 
    { 
     List<string> stringlist = new List<string>(); 
     DataRow[] rows = tblDataTable.Select("Columnx = '" + hex + "'", "Columny ASC"); 
     foreach (DataRow row in rows) { stringlist.Add(row["Columny"].ToString()); } 
     return stringlist; 
    } 

Quelqu'un sait un peu méthode plus simple? Je suppose que c'est assez facile, mais je me demande si je fais assez de ceux-ci si iterating via foreach loop ne sera pas un coup de performance. TIA!

Répondre

4

Vous pouvez utiliser LINQ pour simplifier:

public IEnumerable<string> LookupColumnY(string hex) 
{ 
    return tblDataTable 
       .Select("Columnx = '" + hex + "'", "Columny ASC") 
       .Select(row => row["Columny"].ToString()); 
} 

Si vous avez besoin de retourner une liste, vous pouvez ajouter ToList():

public IList<string> LookupColumnY(string hex) 
{ 
    return tblDataTable 
       .Select("Columnx = '" + hex + "'", "Columny ASC") 
       .Select(row => row["Columny"].ToString()) 
       .ToList(); 
} 

Cependant, cela reste itérer chaque ligne dans la sélection .

+0

Ok merci! Très appréciée! – James

Questions connexes