Comment interroger une Table de données dans la mémoire pour remplir un tableau de données
Je suis en train de mettre à jour Microsoft du rapport. Ce qu'il fait est d'écrire le nombre de clients où exclus de ce processus de conversion, et pour quelle raison. Actuellement, le programme écrit toutes les supprimé les clients vers le serveur interroge ensuite revenir à remplir une spécialité de la table avec les résultats.
Voici la requête en cours:
SELECT DeletedClients.Reason,
COUNT(DeletedClients.Reason) AS Number,
CAST(CAST(COUNT(DeletedClients.Reason) AS float)
/ CAST(t.Total AS float)
* 100 AS numeric(4, 1)) AS percentage
FROM DeletedClients CROSS JOIN
(SELECT COUNT(*) AS Total
FROM DeletedClients AS DeletedClients_1
WHERE (ClinicID = @ClinicID)) AS t
WHERE (DeletedClients.ClinicID = @ClinicID)
AND (DeletedClients.TotalsIdent = @ident)
GROUP BY DeletedClients.Reason, t.Total
ORDER BY Number DESC
Ce que je voudrais faire est de ne pas écrire DeletedClients
pour le serveur comme il existe déjà en mémoire dans mon programme comme un DataTable et il est juste de ralentir le rapport et le remplissage de la base de données avec des informations que nous n'avez pas besoin d'enregistrer.
Ma principale question est celle-ci, Soit :
Comment interroger une table de données pour faire une nouvelle dans la mémoire des données de table qui a les mêmes résultats que si j'ai écrit la le serveur SQL et le lire dans la requête ci-dessus?
OU
Comment dans Microsoft Rapports faites-vous une clause group by pour les éléments dans un tableau Matriciel à son tour =Fields!Reason.Value
=Fields!Number.Value
=Fields!percentage.Value
dans quelque chose de similaire pour le résultat retourné par la requête ci-dessus?
- D'autres exemples ici - dotnetperls.com/datatable-select Sélectionnez("Taille >= 230 ET Sexe = 'm'"); Select("Date > #6/1/2001#");
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser DataTable.Sélectionnez à la requête de la DataTable.
Ou pour des requêtes plus complexes, vous pouvez utiliser LINQ pour interroger la Table de données:
The type 'AnonymousType#1' cannot be used as type parameter 'T' in the generic type or method 'System.Data.DataTableExtensions.CopyToDataTable<T>(System.Collections.Generic.IEnumerable<T>)'. There is no implicit reference conversion from 'AnonymousType#1' to 'System.Data.DataRow'.
System.Data
est la seule référence requis pour utiliser ce code, et si vous ne pouvez pas importer l'espace de nom il y a peut être un problème plus important que vous devez traiter. Comme leSystem
espace de noms,System.Data
est à peu près nécessaire pour données-développement en .NET.System.Data
assemblée, qu'elle regarde comme vous l'avez fait. En supposant que Linq est où sa rupture, essayez d'ajouter une référence àSystem.Data.Linq
et/ouSystem.Linq
aussi.Il y a deux façons que je peux penser à la requête de la table de données. Ci-dessous un exemple d'utilisation de deux façons.