Un DataSet est généralement utilisé pour contenir un résultat de la base de données en mémoire, c'est-à-dire qu'il contient un objet DataTable. Les objets DataSet et DataTable eux-mêmes sont indépendants de la base de données, de sorte que le résultat ne doit pas provenir d'une base de données. Le DataSet peut contenir plusieurs DataTables et vous pouvez même définir des relations entre eux. C'est comme une mini base de données en mémoire.
Une source de liaison est un objet pouvant fournir une liste d'objets ayant des propriétés. Un DataSet ou un DataTable peut le faire, mais il pourrait s'agir de n'importe quel type de liste contenant des objets ayant des propriétés. Un TableAdapter est utilisé pour lire les données d'un DataReader fourni par un objet Command et placer les données dans un objet DataTable.