Convertir Liste générique/Énumérable à DataTable?

J'ai quelques méthodes qui renvoie Génériques différents Listes.

Existe dans .net toute la classe méthode statique ou que ce soit pour convertir n'importe quelle liste dans un datatable? La seule chose que je peux imaginer est utiliser la Réflexion pour ce faire.

SI j'ai ceci:

List<Whatever> whatever = new List<Whatever>();

(Ce code ne fonctionne pas, bien sûr, mais je voudrais avoir la possibilité de:

DataTable dt = (DataTable) whatever;
  • Bien sûr, une bonne question serait: "pourquoi?" - lorsque List<T>, est dans de nombreux cas, un meilleur outil que DataTable ;-p Chacune de leur propre, je suppose...
  • Je pense que celui-ci peut être un doublon de cette question: stackoverflow.com/questions/523153/... Il a même une quasi identiques réponse. 🙂
  • Mes "pourquoi?" est une Liste<T> la manipulation (de la Traversée de colonnes & les lignes). Je suis en train de faire un tableau croisé dynamique à partir d'une Liste<T>, et aux propriétés via la réflexion c'est une douleur. Je fais de mal?
  • il ya un certain nombre d'outils pour supprimer le reflet de la douleur là - FastMember saute à l'esprit. Il se pourrait aussi que d'un DataTable est utile pour des scénarios spécifiques - tout dépend du contexte. Peut-être le plus gros problème est que les gens à l'aide de DataTable pour tous de stockage de données simplement parce qu'il existe, sans prendre le temps d'examiner les options et de leur scénario.
  • si vous êtes intéressés, j'ai mis à jour FastMember d'avoir un soutien direct pour voir la mise à jour de réponse
  • Si vous venez de quoi pivot pourquoi ne pas utiliser le linqLib linqlib.codeplex.com elle met en œuvre presque tout ce que vous pouvez penser pour IEnumerable.
  • Cross post pour cette réponse qui m'a aidé. stackoverflow.com/questions/3839022/listt-to-dataview

InformationsquelleAutor Josema | 2009-02-19