9
votes

Comment puis-je filtrer mon datatable par la valeur de colonne?

J'ai une question sur datatable . Je récupère un dataTable dans la base de données et l'une de ces colonnes contient un 1 ou un 0. Je veux maintenant récupérer uniquement les lignes avec une valeur 1 de 1 dans cette colonne.

Le nom de la colonne est activer .

voici mon datatable : xxx


2 commentaires

N'utilisez-vous pas une requête pour remplir le datatable ?? Utilisez un problème dans cette requête


Faites la logique dans la requête, passez à NULL pour le retourner avec un paramètre où (@Filter est NULL ou Activate = @Filter)


4 Réponses :


3
votes

Vous utilisez simplement DataTable.select comme ceci:

 foundRows = table.Select("ACTIVATE = '1'");


0 commentaires

3
votes
DataTable results = table.Select("ACTIVATE = 1").CopyToDataTable();
That should achieve what you want, basically you can query data tables much like SQL.

0 commentaires

25
votes

via SQL (préféré) xxx pré>

via linq-to -atable code> (en mémoire): p> xxx pré> Si vous êtes toujours sur .NET 2, vous pouvez utiliser DataTable .Sélectionnez code> : p> xxx pré>

En dehors de cela, vous n'avez pas besoin SelectCommand.executerAreader () code> pour remplir le Tableau. P>

DataTable table = new Datatable();
using(var con = new SqlConnection(connectionString))
using(var cmd = new SqlCommand("SELECT * FROM dbo.Table WHERE ACTIVATE = 1", con))
using(var da = new SqlDataAdapter(cmd))
{
    da.Fill( table );
}


6 commentaires

Ajoutez un filtre DataTable.Select (), et cette réponse serait terminée. :)


@ Samys.rathore: pourquoi? LINQ est beaucoup plus puissant et les méthodes TYPE> STRY TYPED supportant également les nullables sont le meilleur choix (si disponible). Edit: Cependant, vous avez raison. Édité ma réponse en conséquence.


+1 Le point de vue cela, je viens de dire que pour couvrir toutes les options d'une seule réponse.


Datatable.select est lent comme l'enfer, surtout avec un nombre plus important d'enregistrements


@Antoniobakula n'a pas su que ... Thanxx, j'ai appris quelque chose de nouveau aujourd'hui .. !! Cette réponse doit être acceptée alors.


copytodatatable () m'a sauvé.



2
votes
return table;
DataTable results = table.Select("ACTIVATE = 1").CopyToDataTable();

0 commentaires