Med FastMember kan du gøre dette uden nogensinde at skulle gå via DataTable (hvilket i mine tests mere end fordobler præstationen):
using(var bcp = new SqlBulkCopy(connection))
using(var reader = ObjectReader.Create(data, "Id", "Name", "Description"))
{
bcp.DestinationTableName = "SomeTable";
bcp.WriteToServer(reader);
}
Bemærk at ObjectReader kan også arbejde med ikke-generiske kilder, og det er ikke nødvendigt at angive medlemsnavnene på forhånd (selvom du sandsynligvis vil bruge ColumnMappings aspekt af SqlBulkCopy hvis du ikke angiver dem i ObjectReader sig selv).