Coverting Liste de Dictionnaire DataTable
Nous sommes actuellement en train de le faire en parcourant chaque valeur de la liste et le dictionnaire:
private DataTable ChangeToDictionary(List<Dictionary<string,int>> list)
{
DataTable datatTableReturn = new DataTable();
if (list.Count() > 0)
{
Dictionary<string, int> haeders = list.ElementAt(0);
foreach (var colHead in haeders)
{
datatTableReturn.Columns.Add(colHead.Key);
}
}
foreach (var row in list)
{
DataRow dataRow = datatTableReturn.NewRow();
foreach (var col in row)
{
dataRow[col.Key] = col.Value;
}
datatTableReturn.Rows.Add(dataRow);
}
return datatTableReturn;
}
Mais est-il une meilleure façon? Boucle à travers tant de fois ne se sent pas bien
Comme quoi? Toute autre approche serait éventuellement besoin pour aller au-dessus de toutes vos données.c.q. boucle sur les enregistrements. Je ne vois pas le réel problème que vous rencontrez. Vous n'aimez pas le code ci-dessus?
Cela fonctionne, mais comme dit est, il y a de mieux ,robuste
Pourquoi convertir une DataTable en premier lieu?
Parce que DataTable peut n'est pas là dans Seilverlight et parfois pas sérialisable, tandis que le retour de service
Que voulez-vous atteindre? Plus de vitesse? Réutilisabilité du code? Code de l'élégance? Pour commencer, ne pas utiliser de
Cela fonctionne, mais comme dit est, il y a de mieux ,robuste
Pourquoi convertir une DataTable en premier lieu?
Parce que DataTable peut n'est pas là dans Seilverlight et parfois pas sérialisable, tandis que le retour de service
Que voulez-vous atteindre? Plus de vitesse? Réutilisabilité du code? Code de l'élégance? Pour commencer, ne pas utiliser de
Count()
méthode d'extension sur List<T>
. Utilisation Count
propriété plutôt.
OriginalL'auteur Simsons | 2013-03-08
Vous devez vous connecter pour publier un commentaire.
Les réponses ci-dessus ne traitent pas la question de la dictionnaire ayant plus de 1 ligne. Cette solution résout le problème.
Et la sortie ressemble à...
(facepalm) oups. vous êtes de droite. J'ai utilisé accidentellement le mauvais itérateur. Édité avec correction.
Ce fut un gain de temps. Bravo!
pour remplir la table de données de Colonnes que vous le cloud aussi utiliser: foreach (KeyValuePair<string,string> entrée en myDictonary) { myTable.Les colonnes.Ajouter(à l'entrée.Key); }
OriginalL'auteur John Kraft
De la vitesse, de l'élégance et de la réutilisabilité ne vont pas ensemble. Vous choisissez toujours le plus important, et essayez d'équilibrer les deux autres.
Plus rapidement le code, plus laide qu'elle est.
Plus belle c'est, moins de réutilisables il est.
Voici un exemple de "élégant" solution, mais qui va avec, n'étant pas très lisible.
et
int
est déjà unobject
Il n'y a pas de relation fixe entre la performance et la lisibilité. Code rapide peut être un code lisible. La laideur est purement subjectif.
Peut-être que je devrais avoir dit "simple". Vous ne pouvez pas dire que la mise en œuvre du tri rapide est plus simple que la mise en œuvre du tri à bulles.
OriginalL'auteur Nikola Radosavljević
Essayez ceci:
OriginalL'auteur Dustin Kingen
Comment au sujet de quelque chose comme le code ci-dessous?
Bon, parce qu'il parcourt chaque ligne exactement une fois. Il devrait être assez rapide, j'ai inclus des exceptions évidentes pour rendre le code plus sûr.
vrai, il fixe.
OriginalL'auteur Jodrell
essayer ma solution, semble très propre pour moi:
Edit:
Oh Snap, cela ne fonctionne que pour un Dictionnaire .. je ne pense pas qu'il par.
Mais maybie vous pouvez modifier à travailler pour une Liste de Dictionarys ..
OriginalL'auteur philx_x
Donner à ceci un essai s'il vous plaît
OriginalL'auteur Deathstalker