Je souhaite imprimer le nombre de tables d'un ensemble de données typé ainsi que le nombre de champs associés à chaque table et les champs clés {primaire, étranger}. Comment obtenir cette information en utilisant LINQ?Requête LINQ contre DataSet
Répondre
Même s'il s'agit d'un jeu de données typé, vous pouvez toujours utiliser la propriété DataTables du DataSet et la propriété DataColumns du DataTable. Cependant, pour utiliser Linq avec ceux-ci, vous devez appeler .OfType<DataTable>()
ou .OfType<DataColumn>()
sur la propriété appropriée pour le transformer en IEnumerable <> afin que vous puissiez exécuter des requêtes Linq à leur encontre. Après cela, vous devriez juste vérifier les propriétés appropriées pour savoir ce qu'est une clé primaire ou une clé étrangère. Je ne suis pas sûr sur la dernière partie s'il y a une propriété pour ces valeurs ou si vous devez vérifier les relations de données pour déterminer ceci.
EDIT: Il existe en réalité une propriété PrimaryKey sur le DataTable qui retournera un tableau des DataColumns qui composent le PrimaryKey. Pour les clés étrangères bien que je crois que vous devez creuser dans la collection DataRelations pour déterminer quelles colonnes sont des clés étrangères.
Merci Adam Gritt – madan
Ce n'est pas exactement ce que linq est pour. Dunno si vous pouvez obtenir le schéma d'une STD (lol), si vous le pouvez, vous pouvez utiliser linq en XML. Sinon, son reflet tout le chemin. – Will