Quelle est la méthode la plus efficace pour convertir une instance DataRowCollection en une DataRow []?Convertir DataRowCollection en DataRow []
Répondre
C'est un peu évident, mais:
DataRowCollection.CopyTo(DataRow[] array, Int32 offset)
?
Il semble que quoi qu'il en soit, vous allez devoir parcourir la collection (CopyTo itère les éléments internes DataRowTree).
Je suppose que vous pourriez utiliser la réflexion pour accéder à l'arborescence non publique, mais à un coût significatif.
DataRow[] rows = dt.Select();
En supposant que vous avez toujours accès au datatable.
Par souci d'exhaustivité, cela est une autre façon (avec Linq), et conserver la ligne de commande:
DataRow[] rows = dt.Rows.Cast<DataRow>().ToArray()
Si vous avez pas accès à la table contenant, vous pouvez utiliser l'extension méthode:
public static class DataRowCollectionExtensions
{
public static IEnumerable<DataRow> AsEnumerable(this DataRowCollection source)
{
return source.Cast<DataRow>();
}
}
Et par la suite:
DataRow[] dataRows = dataRowCollection.AsEnumerable().ToArray();
Mais si vous avez accès à la table contenant, il est préférable de lignes d'accès en utilisant la « méthode d'extension de AsEnumerable
(Description, Source):
DataRow[] dataRows = dataTable.AsEnumerable().ToArray();
De toute façon, vous pouvez utiliser DataTable
» DataTable
méthode de Select
avec plusieurs surcharges (Description, Source):
DataRow[] dataRows = dataTable.Select();
réponse la plus simple et correcte. Devrait être marqué comme la réponse acceptée. Cette question a maintenant 3.500 vues! –
D'accord Javaman59, j'ai signalé une question à un modérateur à examiner. – si618