2010-10-29 22 views
3

Pour des raisons qui n'ont pas beaucoup de sens (Lire: Pas ma décision) J'ai besoin de garder un grand nombre de lignes, environ ~ 90 000, dans un DataTable et je n'ai pas l'option d'utiliser une base de données.Comment dois-je gérer les grands DataTables?

Je dois être capable de rechercher le DataTable efficacement pour trouver des lignes qui correspondent à certains critères de base. Par exemple, je regarde peut-être une ligne qui a la valeur 2 dans deux colonnes spécifiques.

Quelle est la meilleure façon de faire cela?

Édition: Veuillez jeter un coup d'œil à http://chat.stackoverflow.com/transcript/message/62648#62648 pour plus de détails; Après avoir travaillé sur ce sujet, je vais essayer de résumer les détails supplémentaires de la conversation ici ainsi que de fournir ma solution.

+2

Quelles autres limitations avez-vous? .NET 2.0 par exemple? Êtes-vous autorisé à utiliser LINQ? – jcolebrand

+0

Demandez-vous comment conserver les données (Access, Excel, Flat) ou comment interroger les données efficacement? Allez-vous construire ce DataTable chaque fois que votre application s'exécute ou avez-vous besoin de le conserver quelque part? – Dismissile

+0

Peut-être avez-vous un problème de mémoire, mais faites ce que vous voulez faire et s'il y a un problème, parlez-en. –

Répondre

1

La solution que je fini par utiliser cette situation douloureusement maladroit et peu pratique était d'utiliser DataTable.Select(), remplir un nouveau DataTable puis utiliser la même opération pour sélectionner les lignes I nécessaire à partir du DataTable affiné.

Je pense que cette solution est maladroite, mais là encore, les contraintes sur le problème étaient quelque peu irréalistes vu que j'étais sur un horaire serré aussi bien.

6

Vous pouvez facilement utiliser DataTable.Select()

+0

Compte tenu des exigences, c'est le seul moyen de le faire. – NotMe

+0

Correct, mais pas la solution complète pour plusieurs critères de sélection par ligne. –

+0

@Angelina - La méthode Select prend en charge la syntaxe ET pour plusieurs critères de filtre. Vous pouvez en savoir plus sur l'ensemble complet de la syntaxe prise en charge sur http://msdn.microsoft.com/fr-fr/library/system.data.datacolumn.expression.aspx –