Créer ADO.NET DataView en affichant uniquement les colonnes sélectionnées
-
05-07-2019 - |
Question
En C # & amp; .NET, peut-on créer un DataView
qui n'inclut qu'un sous-ensemble approprié du DataColumn
d'un DataTable
donné ?
En termes d’algèbre relationnelle, on affecte un RowFilter
afin d’effectuer une "sélection". opération (s). Comment effectuer une "projection"? opération (p)?
La solution
Vous ne pouvez pas faire cela, mais vous pouvez créer une copie du tableau avec uniquement les colonnes souhaitées:
DataView view = new DataView(table);
DataTable table2 = view.ToTable("FirstColumn", "SecondColumn", "ThirdColumn");
Vous pouvez éventuellement renvoyer des lignes ayant des valeurs distinctes pour les colonnes sélectionnées:
DataView view = new DataView(table);
DataTable table2 = view.ToTable(true, "FirstColumn", "SecondColumn", "ThirdColumn");
Autres conseils
Eh bien, je ne vois aucune raison de "vouloir" " faire cela ... Rappelez-vous, un DataView est juste une liste de pointeurs vers les lignes de la table d'origine, et il n'y a évidemment aucun moyen de supprimer des colonnes de la table d'origine ... du moins pas sans affecter toutes les autres fonctions utilisant cette table ... Utilisez seulement les colonnes que vous voulez ...
créez une vue aux données en échangeant d’une table à l’autre et utilisez dtswap comme source de données.
DataView dw = new DataView(dtfee);
DataTable dtswap = new DataTable();
dtswap = dw.ToTable(true,"Fees", "FeeAmount", "Year", "CollectorName", "Month");
DataSet
et ses types associés n'ont pas la capacité d'effectuer des opérations relationnelles.