Parece que isso funcionaria, no entanto, as alterações (e, portanto, a memória) mantidas pelo DataContext crescerão com cada InsertOnSubmit. Talvez seja aconselhável realizar um SubmitChanges a cada 100 registros?
Eu também daria uma olhada em SqlBulkCopy para ver se ele não se encaixa melhor no seu caso de uso.